首页 > 解决方案 > 如何在使用 Java SQS SDK 时克服 AWS V1 + V2 不匹配问题

问题描述

我有以下带有以下 Maven 导入的代码:

来自 pom.xml:

    <dependency>
        <groupId>software.amazon.awssdk</groupId>
        <artifactId>sqs</artifactId>
        <version>2.14.23</version>
    </dependency>

代码:(注意这是 AWS V2)

    SqsClient sqs = SqsClient.builder()
                .region(Region.US_EAST_1)
                .build();

我的其余 AWS 代码和导入使用的是 V1。当我在本地运行此代码时没有问题,但是当我通过 Lambda --> step 函数执行它时,我得到以下异常:

错误 software.amazon.awssdk.core.exception.SdkClientException 原因 {“errorMessage”:“无法为客户端实例化执行程序拦截器。”,“errorType”:“software.amazon.awssdk.core.exception.SdkClientException”,“stackTrace” :[“software.amazon.awssdk.core.exception.SdkClientException$BuilderImpl.build(SdkClientException.java:98)”,“software.amazon.awssdk.core.interceptor.ClasspathInterceptorChainFactory.createExecutionInterceptor(ClasspathInterceptorChainFactory.java:140)”, “software.amazon.awssdk.core.interceptor.ClasspathInterceptorChainFactory.createExecutionInterceptorFromResource(ClasspathInterceptorChainFactory.java:95)”、“java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:269)”、“java.util.ArrayList $ArrayListSpliterator。forEachRemaining(ArrayList.java:1384)”、“java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)”、“java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)”、“java .util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)", "java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)... ], "cause": { "errorMessage": “software.amazon.awssdk.services.sqs.internal.MessageMD5ChecksumInterceptor。当前类路径:文件:/var/task/”,“errorType”:“java.lang.ClassNotFoundException”,“stackTrace”:[] } }java:472)"、"java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)"、"java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)...]、"原因”:{“errorMessage”:“software.amazon.awssdk.services.sqs.internal.MessageMD5ChecksumInterceptor。当前类路径:文件:/var/task/”,“errorType”:“java.lang.ClassNotFoundException”,“stackTrace” : [] } }java:472)"、"java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)"、"java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)...]、"原因”:{“errorMessage”:“software.amazon.awssdk.services.sqs.internal.MessageMD5ChecksumInterceptor。当前类路径:文件:/var/task/”,“errorType”:“java.lang.ClassNotFoundException”,“stackTrace” : [] } }ClassNotFoundException", "stackTrace": [] } }ClassNotFoundException", "stackTrace": [] } }

我正在使用 maven shaded 插件来减少我的 JAR 大小,但是,当我在本地运行此代码时,它可以正常工作。知道如何解决这个问题吗?

标签: javaamazon-web-servicesamazon-sqs

解决方案


感谢@Susan Mustafa 为我提供解决方案,感谢@Parsifal 为您提供帮助。

正如苏珊链接所建议的那样,我通过在我的 Maven 阴影插件中添加一个过滤器来解决这个问题:

                        <filter>
                            <artifact>software.amazon.awssdk:sqs</artifact>
                            <includes>
                                <include>**</include>
                            </includes>
                        </filter>
                

推荐阅读