3

HtmlUnit is amazing, in Java at least I have had no problems with it. Unfortunately when switching the code over to the Android platform, it is giving me errors when I try to create a web-client.

import android.app.Activity;
import android.os.Bundle;

import com.gargoylesoftware.htmlunit.WebClient;

public class AndroidTestActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    final WebClient webClient = new WebClient();
    }
}

Warnings it gives me before the program starts on the AVD.

This is an example of the warning it gives me, this is the exact warning but it is repeated over and over about 100000x times:

 [2011-08-31 21:25:24 - AndroidTest] Dx warning: Ignoring InnerClasses attribute for an anonymous inner class (org.apache.commons.collections.BeanMap$1) that doesn't come with an associated EnclosingMethod attribute. This class was probably produced by a compiler that did not target the modern .class file format. The recommended solution is to recompile the class from source, using an up-to-date compiler and without specifying any "-target" type options. The consequence of ignoring this warning is that reflective operations on this class will incorrectly indicate that it is not an inner class.

Is there any help you can give me?

Error in android debugger:

09-01 07:44:24.569: WARN/dalvikvm(877): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
09-01 07:44:24.600: ERROR/AndroidRuntime(877): FATAL EXCEPTION: main
09-01 07:44:24.600: ERROR/AndroidRuntime(877): java.lang.ExceptionInInitializerError
09-01 07:44:24.600: ERROR/AndroidRuntime(877):     at com.Test.AndroidTestActivity.onCreate(AndroidTestActivity.java:20)
09-01 07:44:24.600: ERROR/AndroidRuntime(877):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
09-01 07:44:24.600: ERROR/AndroidRuntime(877):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
09-01 07:44:24.600: ERROR/AndroidRuntime(877):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
09-01 07:44:24.600: ERROR/AndroidRuntime(877):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)
09-01 07:44:24.600: ERROR/AndroidRuntime(877):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
09-01 07:44:24.600: ERROR/AndroidRuntime(877):     at android.os.Handler.dispatchMessage(Handler.java:99)
09-01 07:44:24.600: ERROR/AndroidRuntime(877):     at android.os.Looper.loop(Looper.java:123)
09-01 07:44:24.600: ERROR/AndroidRuntime(877):     at android.app.ActivityThread.main(ActivityThread.java:4627)
09-01 07:44:24.600: ERROR/AndroidRuntime(877):     at java.lang.reflect.Method.invokeNative(Native Method)
09-01 07:44:24.600: ERROR/AndroidRuntime(877):     at java.lang.reflect.Method.invoke(Method.java:521)
09-01 07:44:24.600: ERROR/AndroidRuntime(877):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
09-01 07:44:24.600: ERROR/AndroidRuntime(877):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
09-01 07:44:24.600: ERROR/AndroidRuntime(877):     at dalvik.system.NativeStart.main(Native Method)
09-01 07:44:24.600: ERROR/AndroidRuntime(877): Caused by: java.lang.NoClassDefFoundError: org.apache.commons.lang.StringUtils
09-01 07:44:24.600: ERROR/AndroidRuntime(877):     at com.gargoylesoftware.htmlunit.util.URLCreator$URLCreatorStandard.toUrlUnsafeClassic(URLCreator.java:66)
09-01 07:44:24.600: ERROR/AndroidRuntime(877):     at com.gargoylesoftware.htmlunit.util.UrlUtils.toUrlUnsafe(UrlUtils.java:193)
09-01 07:44:24.600: ERROR/AndroidRuntime(877):     at com.gargoylesoftware.htmlunit.util.UrlUtils.toUrlSafe(UrlUtils.java:171)
09-01 07:44:24.600: ERROR/AndroidRuntime(877):     at       com.gargoylesoftware.htmlunit.WebClient.<clinit>(WebClient.java:162)
09-01 07:44:24.600: ERROR/AndroidRuntime(877):     ... 14 more

**ERROR AFTER ADDING COMMONS-LANG AND REST OF LIBRARY

09-02 16:16:34.440: ERROR/AndroidRuntime(396): FATAL EXCEPTION: main
09-02 16:16:34.440: ERROR/AndroidRuntime(396): java.lang.NoClassDefFoundError: com.gargoylesoftware.htmlunit.DefaultCssErrorHandler
09-02 16:16:34.440: ERROR/AndroidRuntime(396):     at com.gargoylesoftware.htmlunit.WebClient.<init>(WebClient.java:157)
09-02 16:16:34.440: ERROR/AndroidRuntime(396):     at com.gargoylesoftware.htmlunit.WebClient.<init>(WebClient.java:180)
09-02 16:16:34.440: ERROR/AndroidRuntime(396):     at com.Test.AndroidTestActivity.onCreate(AndroidTestActivity.java:21)
09-02 16:16:34.440: ERROR/AndroidRuntime(396):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
09-02 16:16:34.440: ERROR/AndroidRuntime(396):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
09-02 16:16:34.440: ERROR/AndroidRuntime(396):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
09-02 16:16:34.440: ERROR/AndroidRuntime(396):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)
09-02 16:16:34.440: ERROR/AndroidRuntime(396):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
09-02 16:16:34.440: ERROR/AndroidRuntime(396):     at android.os.Handler.dispatchMessage(Handler.java:99)
09-02 16:16:34.440: ERROR/AndroidRuntime(396):     at android.os.Looper.loop(Looper.java:123)
09-02 16:16:34.440: ERROR/AndroidRuntime(396):     at android.app.ActivityThread.main(ActivityThread.java:4627)
09-02 16:16:34.440: ERROR/AndroidRuntime(396):     at java.lang.reflect.Method.invokeNative(Native Method)
09-02 16:16:34.440: ERROR/AndroidRuntime(396):     at java.lang.reflect.Method.invoke(Method.java:521)
09-02 16:16:34.440: ERROR/AndroidRuntime(396):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
09-02 16:16:34.440: ERROR/AndroidRuntime(396):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
09-02 16:16:34.440: ERROR/AndroidRuntime(396):     at dalvik.system.NativeStart.main(Native Method)
Jasper
  • 2,166
  • 4
  • 30
  • 50
k9b
  • 1,457
  • 4
  • 24
  • 54

3 Answers3

1

I have that similar problem. After some research, i found that this is due to namespace conflicts. You must recompile the sourcecode of htmlunit. I try to this now, but the htmlunit is so large and complex that i have not yet completed.

Isaac
  • 11
  • 1
0

Your stacktrace shows that an ExceptionInInitializerError is thrown and that it is caused by:

Caused by: java.lang.NoClassDefFoundError: org.apache.commons.lang.StringUtils

Perhaps you're missing some JAR (commons-lang) in the classpath?

Jasper
  • 2,166
  • 4
  • 30
  • 50
  • Thanks very much, only 1 more error left :) I edited the original question to reflect the next error – k9b Sep 02 '11 at 23:22
  • I added the htmlunit class into my project so I dont understand why I am getting the java.lang.NoClassDefFoundError: com.gargoylesoftware.htmlunit.DefaultCssErrorHandle error – k9b Sep 03 '11 at 01:15
  • @user828727: You're missing the HtmlUnit JAR in your classpath, try adding it. – Jasper Sep 03 '11 at 07:32
  • how? I have the htmlunit-2.9.jar in my classpath as well as the htmlunit-core. I go to project, right click and go to properties (this is eclipse). Then I go to add jars (since the jars are in my project folder) then I add them. Is this wrong? – k9b Sep 03 '11 at 15:46
  • @user828727: Here's the list of [HtmlUnit dependencies](http://htmlunit.sourceforge.net/dependencies.html). And yes you seem to be adding them correctly to the classpath. – Jasper Sep 04 '11 at 09:17
  • I think it is working correct now, thanks so much. Unfortunately I think all the .jar classes I have added make the application too heavy. When I try to install it on my phone it wont even install it and it has troubles running on the emulator :( – k9b Sep 04 '11 at 22:43
  • is it possible that the application just has too many jars in its classpath to run? – k9b Sep 05 '11 at 03:24
  • @user828727: I'm not sure, but why don't you create a new question? – Jasper Sep 05 '11 at 06:33
  • also do you have any ideas about this error? -it gives me it about 1000x times... Dx warning: Ignoring InnerClasses attribute for an anonymous inner class – k9b Sep 06 '11 at 17:25
0

There is a special Android version of HtmlUnit (https://github.com/HtmlUnit/htmlunit-android) that should solve most of the issues related to not existing classes in the android jdk.

There is also a hint about the commons-lang problem on the page.

Using this also requires to update your sources to HtmlUnit 3 - see https://www.htmlunit.org/migration.html for some hints.

RBRi
  • 2,704
  • 2
  • 11
  • 14