k9b k9b - 4 months ago 27
Android Question

HtmlUnit Android problem with WebClient

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)

Answer

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?