在Android工程中使用unirest-java報錯.md
阿新 • • 發佈:2019-02-17
在Android工程中引入unirest-java時,執行出現以下錯誤:
Could not find class ‘javax.naming.ldap.LdapName’, referenced from method com.mashape.relocation.conn.ssl.DefaultHostnameVerifier.extractCN
首先,在Android工程中使用unirest-java需要單獨的編譯,這裡參考官方給出的教程,但使用mvn clean assembly:assembly
命令編譯時會在執行Running com.mashape.unirest.test.http.UnirestTest
mvn clean assembly:assembly -Dmaven.test.skip=true
命令執行;
當你編譯出unirest-java-1.4.10-SNAPSHOT-withDependency-ShadedForAndroid.jar後在Android工程中發現不能使用,會報如上的錯誤;但使用教程中Sample工程裡unirest-java-1.3.2-SNAPSHOT-withDependency-ShadedForAndroid.jar卻沒問題;
通過檢視unirest-java在github的提交歷史,發現在adbcfab
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.3.4</version>
</dependency >
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpasyncclient</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.3.4</version>
</dependency>
這樣重新編譯出的jar在Android工程就可以使用了;
原因猜猜是在新版的httpClient中引用了jdk的javax.naming.ldap.LdapName
,而在android.jar中未包含找個類;