java.lang.NoSuchFieldError: No field INSTANCE of type Lorg/apache/http/conn/ssl/

wan_ing 2018-08-01 02:40:35
在Android项目中编译报错:
Process: com.discovery.ocrserver, PID: 9769
java.lang.NoSuchFieldError: No field INSTANCE of type Lorg/apache/http/conn/ssl/AllowAllHostnameVerifier; in class Lorg/apache/http/conn/ssl/AllowAllHostnameVerifier; or its superclasses (declaration of 'org.apache.http.conn.ssl.AllowAllHostnameVerifier' appears in /system/framework/framework.jar:classes2.dex)
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.<clinit>(SSLConnectionSocketFactory.java:144)






说该类AllowAllHostnameVerifier 没有INSTANCE
但是我引入的jar包:httpclient-4.5.2 里面AllowAllHostnameVerifier 是有 INSTANCE;

最后发现是由于我调用AllowAllHostnameVerifier这个类的时候就自动调用Android API26中的AllowAllHostnameVerifier了,

这是怎么回事?jar包和api里面都有 为什么会只调用api里面的? 需要怎么改?

谢谢大神们

...全文
1992 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wytiger666 2021-02-03
  • 打赏
  • 举报
回复
遇到了同样的问题,运行的时候优先加载了fw里面的类,请问题主是怎么解决的啊?
王能 2019-01-28
  • 打赏
  • 举报
回复
引用 5 楼 qq_30837593 的回复:
楼主,这个你怎么解决的么
换成okhttp才是正道
王能 2019-01-28
  • 打赏
  • 举报
回复
阿帕奇的http框架早就被谷歌废弃了,干嘛还垂死挣扎呢,倒不如一次性换成okhttp,省的日后麻烦。 这个问题应该是无解了,总不能重写classloader吧。
qq_30837593 2019-01-26
  • 打赏
  • 举报
回复
楼主,这个你怎么解决的么
wan_ing 2018-08-02
  • 打赏
  • 举报
回复
引用 1 楼 u010531038 的回复:
在app build.gradle中添加

android {
...

useLibrary 'org.apache.http.legacy'
}


然而并不行....还是优先使用framwork.jar里面的类 不知道要怎么解决
wan_ing 2018-08-02
  • 打赏
  • 举报
回复 1
重新描述一下问题:
使用httpclient库中的一个类在android的framework.jar中也同样存在,并且先使用了framework.jar中的类导致的问题

我使用了一个第三方ocr库,这个库使用了httpclient-4.5.2.jar中的org/apache/http/conn/ssl/AllowAllHostnameVerifier类,但是这个类在android的framework中存在,所以运行时会先运行framework中的AllowAllHostnameVerifier类。但是framework中的AllowAllHostnameVerifier类和httpclient-4.5.2.jar中的AllowAllHostnameVerifier类内容有差别,因此,报了如下错误:

java.lang.NoSuchFieldError: No static field INSTANCE of type Lorg/apache/http/conn/ssl/AllowAllHostnameVerifier; in class Lorg/apache/http/conn/ssl/AllowAllHostnameVerifier; or its superclasses (declaration of 'org.apache.http.conn.ssl.AllowAllHostnameVerifier' appears in /system/framework/framework.jar:classes2.dex)

问题是,我又不能改我使用的第三方ocr库的代码,所以遇到像这种必须使用httpclient-4.5.2.jar中的某个类的某个方法,但是这个类在framework中有,但是使用到的相关方法却没有的情况,大家是如何解决的呢?谢谢
不敢太幸福 2018-08-01
  • 打赏
  • 举报
回复
在app build.gradle中添加

android {
...

useLibrary 'org.apache.http.legacy'
}

80,350

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧