"No static field INSTANCE" in Android because of the AllowAllHostnameVerifier class
abigliar opened this issue · 31 comments
In Android (targetSdk 28),there is a issue because 'org/apache/http/conn/ssl/AllowAllHostnameVerifier' which the HtmlUnit uses is different of 'org.apache.http.conn.ssl.AllowAllHostnameVerifier' which used in Android SDK. And it is the log:
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.(SSLConnectionSocketFactory.java:151)
at com.gargoylesoftware.htmlunit.httpclient.HtmlUnitSSLConnectionSocketFactory.buildSSLSocketFactory(HtmlUnitSSLConnectionSocketFactory.java:89)
at com.gargoylesoftware.htmlunit.HttpWebConnection.configureHttpsScheme(HttpWebConnection.java:636)
at com.gargoylesoftware.htmlunit.HttpWebConnection.createHttpClientBuilder(HttpWebConnection.java:559)
at com.gargoylesoftware.htmlunit.HttpWebConnection.getHttpClientBuilder(HttpWebConnection.java:520)
at com.gargoylesoftware.htmlunit.HttpWebConnection.getResponse(HttpWebConnection.java:172)
at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseFromWebConnection(WebClient.java:1436)
at com.gargoylesoftware.htmlunit.WebClient.loadWebResponse(WebClient.java:1355)
at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:415)
at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:336)
at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:488)
at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:469)
This looks like a classspath issue. Please make sure to have the correct httpclient in your classpath,
Any progress?
Any progress?
I‘m just use htmlunit with two steps:
1.implementation 'net.sourceforge.htmlunit:htmlunit:2.37.0' , in build.gradle
2.WebClient webClient = new WebClient(BrowserVersion.CHROME);
webClient.getOptions().setThrowExceptionOnScriptError(false);
webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
webClient.getOptions().setActiveXNative(false);
webClient.getOptions().setCssEnabled(false);
webClient.getOptions().setJavaScriptEnabled(true);
webClient.setJavaScriptTimeout(2000);
webClient.getOptions().setTimeout(2000);
webClient.setAjaxController(new NicelyResynchronizingAjaxController());
Log.e("", "1");
HtmlPage page = null;
try {
Log.e("", "2");
page = webClient.getPage(source);
Log.e("", "3");
} catch (Exception e) {
e.printStackTrace();
Log.e("", "no");
return null;
} finally {
webClient.close();
}
“webClient.getPage(source)” broke down and my Android app threw the error log above. (The "source" is a string of a normal website)
After my inspection, there is an old version of "org.apache.http" in Android SDK. Its "Allowallhostnameverifier" class does not contain "public static final allowallhostnameverifier instance = new allowallhostnameverifier();". However, the "Allowallhostnameverifier" class in "org.apache.http" used by htmlunit contains "public static final allowallhostnameverifier instance = new allowallhostnameverifier();".
Class ""Allowallhostnameverifier" in "org.apache.http.conn.ssl" in Android SDK is preferred by code, and it causes this problem.
Hi all,
first of all thanks for reporting.
Regarding the issue - as far as i can see we have this problem:
- HtmlUnit is using org.apache.http.conn.ssl.SSLConnectionSocketFactory (from com.gargoylesoftware.htmlunit.httpclient.HtmlUnitSSLConnectionSocketFactory.buildSSLSocketFactory(HtmlUnitSSLConnectionSocketFactory.java:89)
- as far as i can see this class is not deprecated
- but this class uses internally the class INSTANCE static var of class org/apache/http/conn/ssl/AllowAllHostnameVerifier
- from the HtmlUnit point of view this is all correct because i never directly deal with the AllowAllHostnameVerifier class
But i fear this does not help with your problem :-)
For me this looks like your classloader mixes classes from two different versions of org.apache.Http.
Maybe you can sysout the classloader of the various involvedclasses end check that they are all loaded by the same class loader and from the same jar.
Regarding the dependencies - HtmlUnit uses maven as build tool; this makes the dependencies explicit.
If you like to see the details you can have a look at e.g. https://mvnrepository.com/artifact/net.sourceforge.htmlunit/htmlunit/2.37.0
- 2.37.0 depends on org.apache.httpcomponents » httpmime 4.5.11
- httpmime 4.5.11 depends on org.apache.httpcomponents » httpclient 4.5.11
- httpclient 4.5.11 depends on org.apache.httpcomponents » httpcore 4.4.13
You can browse all the other releases also similar to this.
@abigliar were you able to fix this error?
@rbri That is what I believe is happening. Last versions of htmlunit, like 2.36.0 and 2.37.0 are using 'org.apache.http.conn.ssl.AllowAllHostnameVerifier'. This class is deprecated starting API level 22.
Recent versions of httpclient-android still have this deprecated class, however they don't contain the instance "public static final allowallhostnameverifier instance = new allowallhostnameverifier()"
So, I think by using old versions of httpclient-android (where it's till present this static field instance) we might be able to fix the problem.
But there is one more problem though. When using older versions of httpclient-android, I get a duplicate classes error, because there is a conflict between the classes of old of httpclient-android and the classes of their newer versions (which are contained in my case in the jetfified jar, which is basically a collection of utilities for android).
So in order to fix the issue, we would need to exclude in the gradle the newer versions of httpclient-android and httpcore and implement in the dependecies the older versions.
That's what I think. Not sure if this is correct and how to actually exclude the newer versions.
yeah, you undersyand what I said.
Regarding the dependencies - HtmlUnit uses maven as build tool; this makes the dependencies explicit.
If you like to see the details you can have a look at e.g. https://mvnrepository.com/artifact/net.sourceforge.htmlunit/htmlunit/2.37.02.37.0 depends on org.apache.httpcomponents » httpmime 4.5.11
httpmime 4.5.11 depends on org.apache.httpcomponents » httpclient 4.5.11
httpclient 4.5.11 depends on org.apache.httpcomponents » httpcore 4.4.13You can browse all the other releases also similar to this.
That's what I did at the beginning, and I checked and tried many times.
Unfortunately it's useless. Because there is an Allowallhostnameverifier class in an old org.apache.http used by Android SDK which is not contain "public static final allowallhostnameverifier instance = new allowallhostnameverifier();", the Android app run with it rather than the org.apache.http which htmlunit uses, no matter how new the org.apache.http htmlunit uses.
Just kidding, we may need to contact Google to update org.apache.http in Android to solve the problem from the root. However, they have already deprecated it.
hello, can fix this bug in the future?
@abigliar httpclient can not use , this is very sad. but i dont know how to fix it.Does this issue raise the priority?
Isnt there any way to force android to use our supplied HttpClient rather that the one in Android Sdk?
I just updated AndroidStudio to the latest and tried implementation("org.seleniumhq.selenium:selenium-htmlunit-driver:2.52.0")
and it gives the No static field INSTANCE of type Lorg/apache/http/conn/ssl/AllowAllHostnameVerifier error.
How likely is it that Google doesn't want this to work?
Is there an old version of HtmlUnit that is in alignment with the version of HtmlUnit that Google has integrated?
In other words, if I were willing to reach back and grab an old version, build that into my app, could I get htmlunit to work in my Android app?
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!classes4.dex)
How can I resolve this issue?
Android Studio 4.1.3
classpath "com.android.tools.build:gradle:4.1.3"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.32"
maybe i have an idea - will try to make something possible during the next days
please be a bit patient
Ok, made some progress here - hopefully
Please try to replace your htmlunit dependency with
<dependency>
<groupId>net.sourceforge.htmlunit</groupId>
<artifactId>htmlunit-android</artifactId>
<version>2.56.0-SNAPSHOT</version>
</dependency>
You have to add the sonatype snapshot repository to your pom distributionManagement section also:
<snapshotRepository>
<id>sonatype-nexus-snapshots</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</snapshotRepository>
And please report your results.
Thanks @rbri ! Sorry for the delay, as I was on holiday.
I see "https://oss.sonatype.org/content/repositories/snapshots/net/sourceforge/htmlunit/htmlunit-android/2.56.0-SNAPSHOT/maven-metadata.xml" is populated appropriately, but I'm having trouble convincing Android Studio to look there.
Although I have configured the top level build.gradle with the repository, and put the dependency into the app level build.gradle, the build process seems to not to search the sonatype repository. I will work on that problem and get back with my results when I figure out how to coax Android Studio to use the repositories I specify.
--Dale--
buildscript {
repositories {
google()
maven { url "https://oss.sonatype.org/content/repositories/snapshots"}
mavenCentral()
}
....
}
In the app's build.gradle:
....
dependencies {
implementation "androidx.work:work-runtime:2.7.1" //DRS 2021 12 20 Added for WorkManager
//implementation 'org.seleniumhq.selenium:selenium-htmlunit-driver:2.52.0'
implementation 'net.sourceforge.htmlunit:htmlunit-android:2.56.0-SNAPSHOT'
}
The additional repository seems not to be acknowledge by the build process:
> Could not find net.sourceforge.htmlunit:htmlunit-android:2.56.0-SNAPSHOT.
Searched in the following locations:
- https://dl.google.com/dl/android/maven2/net/sourceforge/htmlunit/htmlunit-android/2.56.0-SNAPSHOT/maven-metadata.xml
- https://dl.google.com/dl/android/maven2/net/sourceforge/htmlunit/htmlunit-android/2.56.0-SNAPSHOT/htmlunit-android-2.56.0-SNAPSHOT.pom
- https://repo.maven.apache.org/maven2/net/sourceforge/htmlunit/htmlunit-android/2.56.0-SNAPSHOT/maven-metadata.xml
- https://repo.maven.apache.org/maven2/net/sourceforge/htmlunit/htmlunit-android/2.56.0-SNAPSHOT/htmlunit-android-2.56.0-SNAPSHOT.pom
- https://jcenter.bintray.com/net/sourceforge/htmlunit/htmlunit-android/2.56.0-SNAPSHOT/maven-metadata.xml
- https://jcenter.bintray.com/net/sourceforge/htmlunit/htmlunit-android/2.56.0-SNAPSHOT/htmlunit-android-2.56.0-SNAPSHOT.pom
Required by:
project :app
I was able to figure out how to coax Android Studio to use the repositories I specify by putting the repository into settings.gradle
instead of build.gradle
:
settings.gradle
import org.gradle.api.initialization.resolve.RepositoriesMode
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)
repositories {
google()
mavenCentral()
jcenter() // Warning: this repository is going to shut down soon
maven { url 'https://oss.sonatype.org/content/repositories/snapshots'}
}
}
rootProject.name = "My Application"
include ':app'
But I'm now getting a ClassNotFoundException on org.apache.commons.codec.net.URLCodec
, which I haven't yet attempted to resolve.
2022-01-08 18:56:56.745 30150-30231/com.sengsational.myapplication E/WM-WorkerWrapper: Work [ id=cd25e3aa-1ffe-4e7c-97e6-9e3e24b67c5f, tags={ LogonWorker, com.sengsational.myapplication.LogonWorker } ] failed because it threw an exception/error
java.util.concurrent.ExecutionException: java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/commons/codec/net/URLCodec;
at androidx.work.impl.utils.futures.AbstractFuture.getDoneValue(AbstractFuture.java:516)
at androidx.work.impl.utils.futures.AbstractFuture.get(AbstractFuture.java:475)
at androidx.work.impl.WorkerWrapper$2.run(WorkerWrapper.java:311)
at androidx.work.impl.utils.SerialExecutor$Task.run(SerialExecutor.java:91)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:920)
Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/commons/codec/net/URLCodec;
at com.gargoylesoftware.htmlunit.util.UrlUtils.encode(UrlUtils.java:377)
at com.gargoylesoftware.htmlunit.util.UrlUtils.encodeUrl(UrlUtils.java:286)
at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseFromWebConnection(WebClient.java:1536)
at com.gargoylesoftware.htmlunit.WebClient.loadWebResponse(WebClient.java:1514)
at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:493)
at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:413)
at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:546)
at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:528)
at com.sengsational.myapplication.LogonWorker.doWork(LogonWorker.java:45)
at androidx.work.Worker$1.run(Worker.java:86)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:920)
Caused by: java.lang.ClassNotFoundException: Didn't find class "org.apache.commons.codec.net.URLCodec" on path: DexPathList[[zip file "/data/app/~~ig9PmRs7dC6mNK7ziH1U0g==/com.sengsational.myapplication-QcCKRitc530geP0_2pw7Qw==/base.apk"],nativeLibraryDirectories=[/data/app/~~ig9PmRs7dC6mNK7ziH1U0g==/com.sengsational.myapplication-QcCKRitc530geP0_2pw7Qw==/lib/arm64, /system/lib64, /system_ext/lib64, /product/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:218)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at com.gargoylesoftware.htmlunit.util.UrlUtils.encode(UrlUtils.java:377)
at com.gargoylesoftware.htmlunit.util.UrlUtils.encodeUrl(UrlUtils.java:286)
at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseFromWebConnection(WebClient.java:1536)
at com.gargoylesoftware.htmlunit.WebClient.loadWebResponse(WebClient.java:1514)
at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:493)
at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:413)
at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:546)
at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:528)
at com.sengsational.myapplication.LogonWorker.doWork(LogonWorker.java:45)
at androidx.work.Worker$1.run(Worker.java:86)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:920)
Ok, have updated the package to add some more debug code.
From the first look i think you have HtmlUnit twice in your classpath - but lets see.
The new snapshot build contains a main class - com.gargoylesoftware.htmlunit.android.Main.
Please call the main method of this class and check the output.
This is what i get here:
com.gargoylesoftware.htmlunit.WebClient htmlunit-android-2.56.0-SNAPSHOT.jar (2021-12-12)
net.sourceforge.htmlunit.corejs.javascript.Function htmlunit-android-2.56.0-SNAPSHOT.jar (2021-12-11)
net.sourceforge.htmlunit.cyberneko.HTMLElements htmlunit-android-2.56.0-SNAPSHOT.jar (2021-12-11)
com.gargoylesoftware.css.parser.CSSOMParser htmlunit-android-2.56.0-SNAPSHOT.jar (2021-12-11)
org.htmlunit.org.apache.http.client.HttpClient htmlunit-android-2.56.0-SNAPSHOT.jar (2020-10-03)
org.htmlunit.org.apache.http.Header htmlunit-android-2.56.0-SNAPSHOT.jar (2020-01-09)
org.htmlunit.org.apache.http.entity.mime.MIME htmlunit-android-2.56.0-SNAPSHOT.jar (2020-10-03)
org.eclipse.jetty.client.HttpClient jetty-client-9.4.44.v20210927.jar (2021-09-27)
....
Reading https://www.wetator.org/testform/
WETATOR / Test Form
Test Form
....
Submit My Truth
The interesting part is on the top, this mean you use HtmlUnit and the HttpClient frorm htmlunit-android-2.56.0-SNAPSHOT.jar.
And the system is able to find the repackaged classes like org.htmlunit.org.apache.http.client.HttpClient.
com.gargoylesoftware.htmlunit.WebClient htmlunit-android-2.56.0-SNAPSHOT.jar (2021-12-12)
net.sourceforge.htmlunit.corejs.javascript.Function htmlunit-android-2.56.0-SNAPSHOT.jar (2021-12-11)
net.sourceforge.htmlunit.cyberneko.HTMLElements htmlunit-android-2.56.0-SNAPSHOT.jar (2021-12-11)
com.gargoylesoftware.css.parser.CSSOMParser htmlunit-android-2.56.0-SNAPSHOT.jar (2021-12-11)
org.htmlunit.org.apache.http.client.HttpClient htmlunit-android-2.56.0-SNAPSHOT.jar (2020-10-03)
org.htmlunit.org.apache.http.Header htmlunit-android-2.56.0-SNAPSHOT.jar (2020-01-09)
org.htmlunit.org.apache.http.entity.mime.MIME htmlunit-android-2.56.0-SNAPSHOT.jar (2020-10-03)
Please try and report your results.
My initial attempts to find a Main.class weren't successful, so I made the assumption that my build process had the previous version of htmlunit-android-2.56.0-SNAPSHOT. So I deleted .gradle/caches
and deleted .m2
. If I were more knowledgeable about how Android Studio does it's build, I probably could have just unzipped the associated jar (and maybe decompiled) to look for the class, but I just took the steps to remove the cache and and rebuild. Unfortunately, I'm still not able to get a reference to Main. I will continue to explore ways to get detail on the Android Studio build process with respect to pulling in dependencies, but wanted to make this note as to my current status.
ETA: I found this under .gradle/caches/modules-2/resources-2.1/85/(guid)/mavin-metadata.xml
:
<groupId>net.sourceforge.htmlunit</groupId>
<artifactId>htmlunit-android</artifactId>
<version>2.56.0-SNAPSHOT</version>
<versioning>
<snapshot>
<timestamp>20220109.102650</timestamp>
<buildNumber>2</buildNumber>
</snapshot>
<lastUpdated>20220109102650</lastUpdated>
....
So it appears I'm getting the version dated 9th of January.
I found your source code here: https://github.com/HtmlUnit/htmlunit-android/blob/main/src/main/java/com/gargoylesoftware/htmlunit/android/Main.java
But when I pasted the code into the onCreate()
in my Android activity, I got a null pointer exception. I further discovered that VersionUtil.determineVersionFromJarFileName(tmpClass)
calls tmpClass.getProtectionDomain()
, which returns null in the Android version of Java.
I have asked a Stack Overflow question about a version that works in Android: https://stackoverflow.com/questions/70700602/how-to-list-jar-files-that-are-active-in-an-android-application
I documented the classpath for both the selenium htmlunit and the snapshot htmlunit in this repository: https://github.com/sengsational/TestSelenium (see .txt files in the root).
The full stack trace leading to the ClassNotFoundException on org.apache.commons.codec.net.URLCodec is also included in the repo.
Any update on this one?
have fixed the missing dependency to commons codec and updated the build
now it is 2.58.0-SNAPSHOT
have fixed the missing dependency to commons codec and updated the build
now it is 2.58.0-SNAPSHOT
The problem is solved, right? If so, I will close the issue.
have fixed the missing dependency to commons codec and updated the build
now it is 2.58.0-SNAPSHOT
Does that mean the issues on Android are fixed when using net.sourceforge.htmlunit:htmlunit-android:2.58.0-SNAPSHOT ?
Is there something that would hinder me to use this dependency everywhere (on Android and on server) to not need to distinguish between different libraries?
Or does it mean net.sourceforge.htmlunit:htmlunit:2.58.0-SNAPSHOT is now android compatible?
Since it's still snapshot version, when will it be officially released or is version 2.58.0 on maven central already including the fix?
Liebe Grüße @rbri 🙋
Looks like the htmlunit-android version (at least the latest snapshot build is working. Will soon make a new snapshot available to fix the clipboard problem.
Looks like 2.58.0-SNAPSHOT it got past the No static field INSTANCE problem :)
I do see the clipboard problem.
The clipboard problem is already solved with the 2.59.0-SNAPSHOT
I'm getting "..msmxl/package-info; cannot be represented in dex format." when I try to build with 2.59.0
> Task :app:mergeExtDexDebug
ERROR:C:\Users\Owner\.gradle\caches\transforms-3\f854097ce0f653d98e93836a955978fe\transformed\jetified-htmlunit-android-2.59.0-SNAPSHOT.jar: D8: com.android.tools.r8.internal.r8: Class descriptor 'Lcom\gargoylesoftware\htmlunit\activex\javascript\msxml\package-info;' cannot be represented in dex format.
> Task :app:mergeExtDexDebug FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:mergeExtDexDebug'.
> Could not resolve all files for configuration ':app:debugRuntimeClasspath'.
> Failed to transform htmlunit-android-2.59.0-SNAPSHOT.jar (net.sourceforge.htmlunit:htmlunit-android:2.59.0-SNAPSHOT:20220222.180647-1) to match attributes {artifactType=android-dex, asm-transformed-variant=NONE, dexing-enable-desugaring=true, dexing-is-debuggable=true, dexing-min-sdk=26, org.gradle.category=library, org.gradle.libraryelements=jar, org.gradle.status=integration, org.gradle.usage=java-runtime}.
> Execution failed for DexingNoClasspathTransform: C:\Users\Owner\.gradle\caches\transforms-3\f854097ce0f653d98e93836a955978fe\transformed\jetified-htmlunit-android-2.59.0-SNAPSHOT.jar.
> Error while dexing.
Caused by: org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration$ArtifactResolveException: Could not resolve all files for configuration ':app:debugRuntimeClasspath'.
Caused by: org.gradle.api.internal.artifacts.transform.TransformException: Execution failed for DexingNoClasspathTransform: C:\Users\Owner\.gradle\caches\transforms-3\f854097ce0f653d98e93836a955978fe\transformed\jetified-htmlunit-android-2.59.0-SNAPSHOT.jar.
Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete, origin: C:\Users\Owner\.gradle\caches\transforms-3\f854097ce0f653d98e93836a955978fe\transformed\jetified-htmlunit-android-2.59.0-SNAPSHOT.jar:com/gargoylesoftware/htmlunit/activex/javascript/msxml/package-info.class
+--- net.sourceforge.htmlunit:htmlunit-android:2.59.0-SNAPSHOT
| +--- xalan:xalan:2.7.2
| | \--- xalan:serializer:2.7.2
| +--- org.apache.commons:commons-lang3:3.12.0
| +--- org.apache.commons:commons-text:1.9
| +--- commons-io:commons-io:2.10.0
| +--- commons-logging:commons-logging:1.2
| +--- commons-net:commons-net:3.8.0
| +--- commons-codec:commons-codec:1.15
| +--- org.brotli:dec:0.1.2
| +--- com.shapesecurity:salvation2:3.0.0
| \--- org.eclipse.jetty.websocket:websocket-client:9.4.45.v20220203
| +--- org.eclipse.jetty:jetty-client:9.4.45.v20220203
| | +--- org.eclipse.jetty:jetty-http:9.4.45.v20220203
| | | +--- org.eclipse.jetty:jetty-util:9.4.45.v20220203
| | | \--- org.eclipse.jetty:jetty-io:9.4.45.v20220203
| | | \--- org.eclipse.jetty:jetty-util:9.4.45.v20220203
| | \--- org.eclipse.jetty:jetty-io:9.4.45.v20220203 (*)
| +--- org.eclipse.jetty:jetty-util:9.4.45.v20220203
| +--- org.eclipse.jetty:jetty-io:9.4.45.v20220203 (*)
| \--- org.eclipse.jetty.websocket:websocket-common:9.4.45.v20220203
| +--- org.eclipse.jetty.websocket:websocket-api:9.4.45.v20220203
| +--- org.eclipse.jetty:jetty-util:9.4.45.v20220203
| \--- org.eclipse.jetty:jetty-io:9.4.45.v20220203 (*)
@sengsational have updated the htmlunit-android-2.59.0-SNAPSHOT to remove the package-info.class files from the HtmlUnit part because they are not needed.
Please:
- open a new issue on https://github.com/HtmlUnit/htmlunit-android for this problem
- try the new snapshot build and inform about the results
- open a separate issue for every problem you are facing - it makes the tracking much simpler for me
Will attempt to the best of my abilities. Thanks for your patience.