开发者社区 问答 正文

语音回执消息 ----呼叫记录消息 本地调用有问题

2019 19:35:07 ERROR com.alicom.mns.tools.DefaultAlicomMessagePuller - PullMessageTask_execute_error,messageType:VoiceReport,queueName:Alicom-Queue-1623335025568775-VoiceReport
java.lang.NoSuchMethodError: org.apache.http.util.Asserts.check(ZLjava/lang/String;Ljava/lang/Object;)V

at org.apache.http.impl.nio.client.CloseableHttpAsyncClientBase.ensureRunning(CloseableHttpAsyncClientBase.java:90)
at org.apache.http.impl.nio.client.InternalHttpAsyncClient.execute(InternalHttpAsyncClient.java:123)
at org.apache.http.impl.nio.client.CloseableHttpAsyncClient.execute(CloseableHttpAsyncClient.java:74)
at org.apache.http.impl.nio.client.CloseableHttpAsyncClient.execute(CloseableHttpAsyncClient.java:107)
at org.apache.http.impl.nio.client.CloseableHttpAsyncClient.execute(CloseableHttpAsyncClient.java:91)
at com.aliyun.mns.common.http.DefaultServiceClient.sendRequestCore(DefaultServiceClient.java:72)
at com.aliyun.mns.common.http.ServiceClient.sendRequestImpl(ServiceClient.java:107)
at com.aliyun.mns.common.http.ServiceClient.sendRequest(ServiceClient.java:71)
at com.aliyun.mns.client.impl.AbstractAction.executeWithCustomHeaders(AbstractAction.java:117)
at com.aliyun.mns.client.impl.AbstractAction.executeWithCustomHeaders(AbstractAction.java:128)
at com.aliyun.mns.client.CloudQueue.popMessage(CloudQueue.java:348)
at com.alicom.mns.tools.DefaultAlicomMessagePuller$PullMessageTask.run(DefaultAlicomMessagePuller.java:33)
at java.lang.Thread.run(Thread.java:745)

展开
收起
神秘面条 2019-01-16 19:36:52 2706 分享 版权
阿里云 AI 助理回答

这个错误信息表明在使用阿里云MNS(消息服务)时遇到了一个NoSuchMethodError,具体来说是关于Apache HttpClient库中的一个方法不存在。这通常是因为项目中存在版本冲突,即代码编译时使用的Apache HttpClient库版本与运行时环境中的版本不一致。

解决这个问题的方法有以下几种:

  1. 检查依赖管理:首先确认项目的pom.xml(如果你使用的是Maven)或build.gradle(如果是Gradle)文件中Apache HttpClient的依赖版本,并确保它与阿里云MNS客户端所期望的版本相匹配。你可以查阅阿里云MNS SDK的官方文档来获取推荐的依赖版本。

  2. 排除冲突:如果项目中其他依赖也间接引入了Apache HttpClient,可能会导致版本冲突。可以尝试在引入MNS SDK或其他可能引起冲突的依赖时,使用Maven的<exclusions>标签或Gradle的exclude配置来排除冲突的HttpClient版本。

    例如,在Maven中:

    <dependency>
       <groupId>com.aliyun.mns</groupId>
       <artifactId>mns-sdk-java</artifactId>
       <version>最新版本号</version>
       <exclusions>
           <exclusion>
               <groupId>org.apache.httpcomponents</groupId>
               <artifactId>httpclient</artifactId>
           </exclusion>
       </exclusions>
    </dependency>
    

    然后单独指定一个兼容的HttpClient版本。

  3. 统一版本:手动指定项目中所有地方使用的Apache HttpClient版本为同一个,以避免版本不一致的问题。

  4. 清理和重新构建:有时候即使修改了依赖,旧的库文件仍然会被使用。执行mvn clean install(Maven)或gradlew clean build(Gradle)来清理并重新构建项目,确保使用的是正确的库版本。

  5. 检查运行环境:确认服务器或本地开发环境中没有遗留旧版本的Apache HttpClient库文件,这些也可能被意外加载。

通过上述步骤应该能解决你遇到的NoSuchMethodError问题。如果问题依旧,建议查看阿里云MNS的官方论坛或开发者社区,那里可能有更多针对特定情况的解决方案或已知问题的讨论。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答分类:
问答地址: