调用站点 #4 bootstrap 方法的异常。代码在 Android Studio 中不起作用,但在 Eclipse 中有效

Dmi*_*kov 6 java android htmlunit

我正在编写代码以使用 HtmlUnit 登录网站。它一直在 eclipse 中工作,但现在我决定将它移到 Android studio 中在应用程序中使用它。我有2个问题。

  1. 为什么 HtmlUnit 需要 API 26,对于现在的技术来说已经非常高了(只有 19% 的用户),但它只是一个网络模拟器?

  2. 为什么在创建 webClient 时会出现此错误?我的例外是:

java.lang.BootstrapMethodError: Exception from call site #4 bootstrap method
    at com.gargoylesoftware.htmlunit.WebClient.addDefaultHeaders(WebClient.java:1496)
    at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseFromWebConnection(WebClient.java:1392)
    at com.gargoylesoftware.htmlunit.WebClient.loadWebResponse(WebClient.java:1321)
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:394)
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:315)
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:466)
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:448)
    at notas.com.mistarapp.Student.login(Student.java:65)
Run Code Online (Sandbox Code Playgroud)

这是我正在经历的代码。所有内容都已导入,并且不会突出显示为错误。这是我的代码:

try (final WebClient webClient = new WebClient(BrowserVersion.CHROME)) {

    HtmlPage firstPage = webClient.getPage(link);

    // waitForBackgroundJavaScript has to be called after every action
    webClient.waitForBackgroundJavaScript(100);

    System.out.println("Access to the login page is made.");
    System.out.println("-------------------------------------------------------------------------------");

    // Get the form that we are dealing with and within that form,
    // find the submit button and the field that we want to change.
    HtmlForm form = firstPage.getFormByName("loginform");

Run Code Online (Sandbox Code Playgroud)

错误发生在线路上:

HtmlPage firstPage = webClient.getPage(link);
Run Code Online (Sandbox Code Playgroud)

Bho*_*gar 11

我通过将 Java8 添加到 android 部分的应用程序级 build.gradle 来解决这个问题。

构建中的 Java 8 从 9.0.0 和更新版本开始运行。您可以在https://developer.android.com/studio/write/java8-support了解有关如何启用此功能的更多信息。

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
    jvmTarget = "1.8"
}
Run Code Online (Sandbox Code Playgroud)