【问题标题】:No static field INSTANCE of type Lorg/apache/http/conn/ssl/AllowAllHostnameVerifier when using htmlunit in Android Studio Project在 Android Studio 项目中使用 htmlunit 时,没有 Lorg/apache/http/conn/ssl/AllowAllHostnameVerifier 类型的静态字段实例
【发布时间】:2020-02-26 22:01:34
【问题描述】:

我在我的 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)

显然,在它自己的类或其超类中没有 AllowAllHostnameVerifier 的静态字段实例。我不知道如何解决这个问题。

【问题讨论】:

    标签: java android android-studio htmlunit


    【解决方案1】:

    正如hc.apache.org 记录的那样:

    AllowAllHostnameVerifier 已弃用。 (4.4) 使用NoopHostnameVerifier

    如果您将依赖项的版本降级为4.3(2013~2015) 异常将得到解决。

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

    【讨论】:

    • @DeborahAnn 主要问题是htmlunit。 htmlunit 2.36.0 删除 AllowAllHostnameVerifier
    • @DeborahAnn 你不能将 htmlunit 2.36.0 用于较低版本的 httpclient
    • 我们可以聊天吗?
    • 顺便说一下,它只适用于implementation 'net.sourceforge.htmlunit:htmlunit:2.14'。不需要httpcomponents。我忘了问你一件事。你有没有机会尝试 2.36.0 以下的其他版本? 2.14 是唯一能绕过这个问题的吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 2015-05-21
    • 2013-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多