You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法运行DynamoDB相关类的JUnit测试,提示类路径存在多个HTTP实现

报错原因与解决方案

错误根本原因

这个报错和你声明多少次client builder没有关系,是AWS SDK for Java 2.x的依赖冲突问题:SDK默认会自动探测classpath下的HTTP客户端实现,当同时存在多个符合要求的实现(比如url-connection-client、apache-client、netty-nio-client中的2个及以上)时,就会抛出该异常。通常是不同AWS服务依赖默认绑定了不同HTTP客户端导致的冲突。

可行解决方案

方案1:显式指定HTTP客户端实现(最稳定)

在构造DynamoDbClient时直接指定要使用的HTTP客户端,绕过SDK的自动探测逻辑:

  1. 首先在pom.xml中确保你要使用的HTTP客户端依赖存在,轻量化同步场景推荐使用url-connection-client:
<dependency>
    <groupId>software.amazon.awssdk</groupId>
    <artifactId>url-connection-client</artifactId>
    <version>你的AWS SDK 2.x版本号</version>
</dependency>
  1. 修改客户端构造代码,增加httpClient配置:
DynamoDbClient client = DynamoDbClient.builder()
        .region(Region.EU_WEST_1)
        .httpClient(UrlConnectionHttpClient.create()) // 新增这行显式指定
        .build();

方案2:排除多余的HTTP客户端依赖

检查pom.xml中所有AWS相关依赖,将不需要的HTTP客户端通过exclusions排除,比如要排除apache-client:

<dependency>
    <groupId>software.amazon.awssdk</groupId>
    <artifactId>dynamodb</artifactId>
    <version>你的AWS SDK 2.x版本号</version>
    <exclusions>
        <exclusion>
            <groupId>software.amazon.awssdk</groupId>
            <artifactId>apache-client</artifactId>
        </exclusion>
    </exclusions>
</dependency>

方案3:通过JVM参数指定默认实现

如果不想修改代码,可以在测试运行时增加JVM系统参数指定HTTP客户端实现,在maven的surefire插件中添加如下配置即可:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>你的插件版本号</version>
    <configuration>
        <systemPropertyVariables>
            <software.amazon.awssdk.http.service.impl>software.amazon.awssdk.http.urlconnection.UrlConnectionSdkHttpService</software.amazon.awssdk.http.service.impl>
        </systemPropertyVariables>
    </configuration>
</plugin>

额外代码优化建议

你代码中字符串比较使用了==,这会比较对象引用而非字符串内容,可能导致匹配不到指定列,建议修改为:

if (key.equals(tableColumn)) {
    ListValues.add(item.get(key).s()) ;
}

内容的提问来源于stack exchange,提问作者TheWalkingMalteser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 23:36:03