maven - 无法为请求处理程序“com.amazonaws.services.sqs.QueueUrlHandler”的客户端实例化请求处理程序链
问题描述
我正在使用 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 构建部分完成,我已经使用此命令在构建管道中更新了最终的 jar 文件。
jar uf jar-file input-file(s)
我在构建服务器上放置了一个编辑过的“request.handlers”,并使用这个命令替换了现有的内部 jar。
https://docs.oracle.com/javase/tutorial/deployment/jar/update.html
推荐阅读
- rust - 在带有锈的向量中实现特征的问题
- hibernate - 是否有可能 multiLoad 调用覆盖会话上附加且已更改的对象?
- python - 将类实例作为函数的可选输入字段
- github - 获取先前提交和最新提交之间的差异?
- asp.net-core - 有没有办法在 .netcore 样板上集成 Json API?
- sql - PostgreSQL 错误:“WHERE”处或附近的语法错误
- azure - 用于带有 VPN 网关的 postgresql 超大规模的 Azure 数据库
- c# - 确保每个线程只有一个 SQLite 连接
- swift - SwiftUI 在 iOS 14 中表单 UI 的变化
- oracle - 如何修复声明语句?