在我的maven项目中,我需要使用aws雅典娜,它将aws核心作为依赖项。然而,对于身份验证,我没有其他选择,只能使用一个提供的工件,它将android核心作为依赖项。问题是,它们都有完全相同名称的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和android都有确切的com.amazonaws.http.ExecutionContext类,但是java中的类没有setContextUserAgent方法。如果更改依赖关系的顺序,雅典娜连接函数就会中断。
发布于 2018-03-23 07:02:53
通过使用雅典娜JDBC驱动程序的独立JAR文件解决了这个问题。所有必需的类都有不同的包名。所以我不需要安装整个核心。
https://stackoverflow.com/questions/49272119
复制相似问题