【问题标题】:Unable to instantiate request handler chain for client for request handler 'com.amazonaws.services.sqs.QueueUrlHandler'无法为请求处理程序“com.amazonaws.services.sqs.QueueUrlHandler”的客户端实例化请求处理程序链
【发布时间】:2021-08-26 12:41:58
【问题描述】:

我正在使用 aws-java-sdk-sqs 依赖项从 SQS 读取消息,出于项目原因,我们将 AWS 依赖项重新定位到最终 jar 内的不同包结构中:

    <relocation>
          <pattern>com.amazonaws</pattern>
          <shadedPattern>com.shaded.amazonaws</shadedPattern>
    </relocation>

我正在使用代码创建 SQS 客户端

AmazonSQS amazonSQS = AmazonSQSClientBuilder.standard().withRegion(region).build();

我收到此代码错误:

com.shaded.amazonaws.AmazonClientException: Unable to instantiate request handler chain for client: Unable to instantiate request handler chain for client. Listed request handler ('com.amazonaws.services.sqs.QueueUrlHandler') does not implement the interface com.shaded.amazonaws.handlers.RequestHandler API.

更新------------------------------- ---------------------------------->

原因:

这个问题是因为

requestHandler2s.addAll(chainFactory.newRequestHandlerChain("/com/amazonaws/services/sqs/request.handlers")); 
requestHandler2s.addAll(chainFactory.newRequestHandler2Chain("/com/amazonaws/services/sqs/request.handler2s"));

这些文件“request.handlers”包含完全限定的处理程序名称。迁移时哪个 maven shade 插件没有处理。

有没有什么方法可以在 maven 的帮助下重新定位这些文件?或者任何其他解决方法,有人发现了吗?

【问题讨论】:

    标签: maven amazon-sqs maven-shade-plugin aws-java-sdk


    【解决方案1】:

    我已经使用这个命令更新了最终的 jar 文件,一旦 maven 构建部分完成,就在构建管道中。

    jar uf jar-file input-file(s)
    

    我在构建服务器上放置了一个已编辑的“request.handlers”,并使用此命令替换了现有的内部 jar。

    https://docs.oracle.com/javase/tutorial/deployment/jar/update.html

    【讨论】:

      猜你喜欢
      • 2023-01-14
      • 1970-01-01
      • 2020-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 2019-06-03
      • 2016-08-09
      相关资源
      最近更新 更多