【问题标题】:Maven aws-java-sdk and aws-android-sdk conflictMaven aws-java-sdk 和 aws-android-sdk 冲突
【发布时间】:2018-03-14 07:43:23
【问题描述】:

在我的 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 连接函数就会中断。

【问题讨论】:

  • 你是在寻求同情吗?如果你要求别的东西,你需要具体。而且我们可能需要更多细节:工件名称和版本号,您是否在 android 上运行,等等。
  • @ErwinBolwidt 抱歉问得不清楚,我已经更新了 pom.xml 部分和我得到的异常以获取更多详细信息。如果你能看看就好了

标签: java maven aws-sdk


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2018-04-05
    • 1970-01-01
    • 2020-09-12
    • 1970-01-01
    • 1970-01-01
    • 2021-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多