目前我在android导入lib包后在运行到
OTSClient client = new OTSClient(endPoint, accessId, accessKey, instanceName);
时总是报错
java.lang.NoSuchMethodError: No virtual method setDefaultMaxPerRoute(I)V in class Lorg/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager; or its super classes (declaration of 'org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager' appears in /system/framework/ext.jar)
at com.aliyun.common.comm.HttpFactory.createThreadSafeClientConnManager(HttpFactory.java:106)
at com.aliyun.common.comm.HttpFactory.creatHttpClient(HttpFactory.java:66)
at com.aliyun.common.comm.DefaultServiceClient.<init>(DefaultServiceClient.java:39)
at com.aliyun.openservices.ots.OTSClient.<init>(OTSClient.java:130)
at com.aliyun.openservices.ots.OTSClient.<init>(OTSClient.java:92)
at com.aliyun.openservices.ots.OTSClient.<init>(OTSClient.java:75)
at com.allen.yun.ots.OTSSingleDataSample.main(OTSSingleDataSample.java:52)
at com.allen.yun.ots.MainActivity.onCreate(MainActivity.java:47)
at android.app.Activity.performCreate(Activity.java:6550)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1120)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3102)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3248)
at android.app.ActivityThread.access$1000(ActivityThread.java:197)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1681)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:6872)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
阿里云什么时候能出移动上支持的demo,方便开发者呢?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
遇到这个错误,通常是因为您的Android项目中存在Apache HttpClient库的版本冲突。阿里云OTS SDK在早期版本中依赖于特定版本的Apache HttpClient库,而您的项目可能引入了不同版本的该库,导致方法找不到的问题。
为了解决这个问题,您可以尝试以下几种方法:
排除冲突: 在您的构建工具(如Gradle)中,尝试排除掉项目中其他依赖带来的Apache HttpClient库,只保留与OTS SDK兼容的版本。如果您使用的是Gradle,可以在依赖声明中加入exclude语句来排除冲突的库。
implementation('com.aliyun.openservices:ots-android-sdk:您使用的版本') {
exclude group: 'org.apache.httpcomponents', module: 'httpclient'
}
然后,手动添加一个与OTS SDK兼容的Apache HttpClient版本到您的依赖中。
更新OTS SDK: 检查阿里云OTS SDK是否有新版本发布,因为较新的版本可能已经解决了此类依赖问题或对Android环境有更好的支持。访问阿里云官方文档查看最新的SDK版本和集成指南。
使用阿里云提供的移动解决方案: 虽然直接在Android应用中使用OTS SDK可能会遇到一些挑战,但您可以考虑使用阿里云的其他服务作为数据存储,比如Mobile Push、MNS等,这些服务通常提供了更友好的移动开发支持和示例代码。
自定义HTTP客户端: 如果OTS SDK允许自定义HTTP客户端,尝试使用OkHttp或者Android自带的HttpURLConnection作为替代方案,这可能需要修改OTS SDK的初始化代码或寻找相关配置选项。
寻求官方支持: 如果上述方法都不能解决问题,建议直接联系阿里云技术支持或在阿里云开发者论坛发帖询问,获取针对您具体情况的帮助。同时,可以反馈给阿里云希望他们提供更完善的Android demo和更好的移动支持。
请根据您的具体情况进行尝试,并确保在进行任何更改时备份好原有项目,以便于回滚。