簡體   English   中英

在 Android Studio 項目中使用 htmlunit 時,沒有 Lorg/apache/http/conn/ssl/AllowAllHostnameVerifier 類型的 static 字段實例

[英]No static field INSTANCE of type Lorg/apache/http/conn/ssl/AllowAllHostnameVerifier when using htmlunit in Android Studio Project

我在我的 Android Studio 項目中使用 htmlunit 2.36.0。 我成功編譯了 apk,但是當我嘗試獲取網頁時出現了一些運行時錯誤。 之前,我收到以下錯誤:

java.lang.BootstrapMethodError: Exception from call site

但是我可以通過在 gradle 中添加這個來解決這個問題:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

但是,現在我面臨另一個錯誤:

 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!classes3.dex)
        at org.apache.http.conn.ssl.SSLConnectionSocketFactory.<clinit>(SSLConnectionSocketFactory.java:151)
        at com.gargoylesoftware.htmlunit.httpclient.HtmlUnitSSLConnectionSocketFactory.buildSSLSocketFactory(HtmlUnitSSLConnectionSocketFactory.java:89)
        at com.gargoylesoftware.htmlunit.HttpWebConnection.configureHttpsScheme(HttpWebConnection.java:635)
        at com.gargoylesoftware.htmlunit.HttpWebConnection.createHttpClientBuilder(HttpWebConnection.java:558)
        at com.gargoylesoftware.htmlunit.HttpWebConnection.getHttpClientBuilder(HttpWebConnection.java:519)
        at com.gargoylesoftware.htmlunit.HttpWebConnection.getResponse(HttpWebConnection.java:171)
        at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseFromWebConnection(WebClient.java:1407)
        at com.gargoylesoftware.htmlunit.WebClient.loadWebResponse(WebClient.java:1326)
        at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:396)
        at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:317)
        at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:469)
        at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:450)

顯然,在它自己的 class 或其超類中沒有 AllowAllHostnameVerifier 的 static 字段實例。 我不知道如何解決這個問題。

使用 android 的端口:

https://github.com/HtmlUnit/htmlunit-android

將此用作依賴項:

implementation("net.sourceforge.htmlunit:htmlunit-android:2.63.0")

正如hc.apache.org記錄的那樣:

AllowAllHostnameVerifier已棄用。 ( 4.4 ) 使用NoopHostnameVerifier

如果您將依賴項的版本降級到4.3 (2013~2015) 異常將得到解決。

implementation 'net.sourceforge.htmlunit:htmlunit:2.15'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM