依赖了一个第三方的包
implementation 'org.cups4j:cups4j:0.7.6'
这个包又去依赖了一个HttpClient包
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.2</version>
</dependency>
调用方法
CupsClient cupsClient = new CupsClient();
CupsPrinter cupsPrinter = cupsClient.getDefaultPrinter();
然后就出现了下面这个问题
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)
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.(SSLConnectionSocketFactory.java:144)
看了看发现,项目中依赖关系中有这两个包。上面那个是系统的,也就是framework下面的jar包。下面那个是第三方包依赖的。
不知道问题到底是什么。HttpClient4.5的包中是有这个AllowAllHostnameVerifier的,但是系统包中没有。可是为什么会去系统中找?
看网上的解决办法,有兄弟说是降到httpClient4.3.5。我瞅了下,4.3.5是没有AllowAllHostnameVerifier的。这是什么因果关系。
想知道在第三方包已经依赖了某个包的情况下,如何强制降低该包版本。
一个脑袋两个大。待解决
https://blog.csdn.net/liqin19870815/article/details/108122281
https://bbs.csdn.net/topics/392424968?page=1