#java #android #htmlunit
#java #Android #htmlunit
Вопрос:
Я пишу код для входа на веб-сайт с использованием HtmlUnit. Он работал в eclipse, но теперь я решил перенести его в Android Studio и использовать в приложении. У меня есть 2 вопроса.
-
Почему HtmlUnit требует API 26, который сейчас очень высок для технологии (только у 19% пользователей), но это всего лишь веб-симулятор?
-
Почему я получаю эту ошибку при создании 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"
}