Maven aws-java-sdk和aws-android-sdk冲突

时间:2018-03-14 07:43:24

标签: java maven aws-sdk

在我的maven项目中,我需要使用aws-java-sdk-athena,它将aws-java-sdk-core作为依赖项。然而,对于身份验证,我没有其他选择,但使用提供的工件,其中aws-android-sdk-core作为依赖项。问题是他们都有com.amazonaws.http.ExecutionContext类,具有完全相同的名称。但他们有不同的方法等。

我尝试排除其中一个,但随后其中一个关闭,这意味着使用了这些类。我现在非常沮丧,因为几乎不可能重新打包其中一个工件来更改其中的包名。

<dependencies>
  <!-- This dependency requires aws-java-sdk-core 1.11.292 -->
  <dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk-athena</artifactId>
    <version>1.11.292</version>
  </dependency>

  <!-- This dependency requires aws-android-sdk-core 2.6.16 -->
  <dependency>
    <groupId>work.commons</groupId>
    <artifactId>work-commons-authentication</artifactId>
    <version>${authz.version}</version>
  </dependency>
<dependencies>
<repositories>
  <repository>
    <id>in.house</id>
    <name>nexus</name>
    <url>http://work.name.com/content/groups/public/</url>
    <snapshots>
      <enabled>true</enabled>
      <updatePolicy>always</updatePolicy>
    </snapshots>
  </repository>
</repositories>

在运行时,我遇到了这个例外:

  

org.springframework.web.util.NestedServletException:处理程序调度失败;嵌套异常是java.lang.NoSuchMethodError:com.amazonaws.http.ExecutionContext.setContextUserAgent(Ljava / lang / String;)

由于java-sdk和android-sdk都具有完全类 com.amazonaws.http.ExecutionContext ,但java-sdk中的类没有 setContextUserAgent 方法。如果我改变了依赖关系的顺序,Athena连接函数就会崩溃。

1 个答案:

答案 0 :(得分:0)

使用Athena JDBC驱动程序的独立JAR文件解决了该问题。所有必需的类仍然有不同的包名称。所以我不需要安装整个aws-java-sdk-core。