Исключение из метода начальной загрузки сайта вызова # 4. Код не работает в Android studio, но работает в Eclipse

#java #android #htmlunit

#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)
  

И это мой код, который я просматриваю. Все импортировано и не выделяется как ошибка. Вот мой код:

 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");

  

в строке возникает ошибка:

 HtmlPage firstPage = webClient.getPage(link);
  

Комментарии:

1. попробуйте добавить следующее; CompileOptions { sourceCompatibility JavaVersion. VERSION_1_8 Совместимость с целевой версией JavaScript. VERSION_1_8 } внутри вашего build.gradle android{}

Ответ №1:

Я исправил эту проблему, добавив Java8 в build.gradle уровня приложения в разделе Android.

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"
}