我使用的是hadoop2.7、hadoopcoreversion1.1.2和awsjavasdk1.10.50。
当我尝试在dynamodb上放置一个项目时,会出现以下错误:
java.lang.NoSuchFieldError: INSTANCE
at com.amazonaws.http.conn.SdkConnectionKeepAliveStrategy.getKeepAliveDuration(SdkConnectionKeepAliveStrategy.java:48)
我发现这个错误是由于awssdk和httpcore版本冲突造成的。
在我的代码中运行:
ClassLoader classLoader = MyClass.class.getClassLoader();
URL resource = classLoader.getResource("org/apache/http/message/BasicLineFormatter.class";
System.out.println(resource);
输出为:
jar:file:/usr/local/Cellar/hadoop/2.7.0/libexec/share/hadoop/common/lib/httpcore-4.2.5.jar!/org/apache/http/message/BasicLineFormatter.class
表示它仍在使用冲突的版本。
但在pom.xml上,我添加了:
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.4.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4.1</version>
<scope>compile</scope>
</dependency>
试图强制使用与sdk兼容的版本,但我的代码仍然使用冲突的版本。
有人知道如何强制我的应用程序使用httpcore和httpclient的非冲突版本吗?
1条答案
按热度按时间bjp0bcyl1#
您可以在所需的httpclient版本上添加依赖项,并从拉入版本4.2.5的依赖项中排除httpclient临时依赖项。使用
mvn dependency:tree
以确定在何处添加排除。