【发布时间】:2011-10-01 16:16:42
【问题描述】:
尝试连接到“www.google.com”时抛出一个简单的 HTMLUnit HTMLUnit 的 WebClient 类初始化失败,原因是与 android jaxp impl 不兼容:
final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_3);
HtmlPage page1 = null;
try {
page1 = webClient.getPage("http://www.google.com/");
} catch (FailingHttpStatusCodeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
....
09-30 23:05:57.867: 错误/AndroidRuntime(289): 致命异常: main 09-30 23:05:57.867: 错误/AndroidRuntime(289): java.lang.RuntimeException: 无法启动活动 ComponentInfo{com.mygo/com.mygo.HTMLUnitActivity}: java.lang.IllegalStateException: 方法 'jsxGet_encoding' 是在 com.gargoylesoftware.htmlunit.javascript.host.css.CSSCharsetRule 中找不到编码属性 09-30 23:05:57.867: 错误/AndroidRuntime(289): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 09-30 23:05:57.867: 错误/AndroidRuntime(289): 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 09-30 23:05:57.867: 错误/AndroidRuntime(289): 在 android.app.ActivityThread.access$2300(ActivityThread.java:125) 09-30 23:05:57.867: 错误/AndroidRuntime(289): 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 09-30 23:05:57.867: 错误/AndroidRuntime(289): 在 android.os.Handler.dispatchMessage(Handler.java:99) 09-30 23:05:57.867: 错误/AndroidRuntime(289): 在 android.os.Looper.loop(Looper.java:123) 09-30 23:05:57.867: 错误/AndroidRuntime(289): 在 android.app.ActivityThread.main(ActivityThread.java:4627) 09-30 23:05:57.867: 错误/AndroidRuntime(289): 在 java.lang.reflect.Method.invokeNative(Native Method) 09-30 23:05:57.867: 错误/AndroidRuntime(289): 在 java.lang.reflect.Method.invoke(Method.java:521) 09-30 23:05:57.867: 错误/AndroidRuntime(289): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 09-30 23:05:57.867: 错误/AndroidRuntime(289): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 09-30 23:05:57.867:错误/AndroidRuntime(289):在 dalvik.system.NativeStart.main(本机方法) 09-30 23:05:57.867:错误/AndroidRuntime(289):原因:java.lang.IllegalStateException:在 com.gargoylesoftware.htmlunit.javascript.host.css.CSSCharsetRule 中找不到编码属性的方法“jsxGet_encoding” 09-30 23:05:57.867: 错误/AndroidRuntime(289): 在 com.gargoylesoftware.htmlunit.javascript.configuration.ClassConfiguration.addProperty(ClassConfiguration.java:109) 09-30 23:05:57.867: 错误/AndroidRuntime(289): 在 com.gargoylesoftware.htmlunit.javascript.configuration.JavaScriptConfiguration.parsePropertyElement(JavaScriptConfiguration.java:437) 09-30 23:05:57.867: 错误/AndroidRuntime(289): 在 com.gargoylesoftware.htmlunit.javascript.configuration.JavaScriptConfiguration.parseClassElement(JavaScriptConfiguration.java:384) 09-30 23:05:57.867: 错误/AndroidRuntime(289): 在 com.gargoylesoftware.htmlunit.javascript.configuration.JavaScriptConfiguration.buildUsageMap(JavaScriptConfiguration.java:312) 09-30 23:05:57.867: 错误/AndroidRuntime(289): 在 com.gargoylesoftware.htmlunit.javascript.configuration.JavaScriptConfiguration.(JavaScriptConfiguration.java:147) 09-30 23:05:57.867: 错误/AndroidRuntime(289): 在 com.gargoylesoftware.htmlunit.javascript.configuration.JavaScriptConfiguration.getInstance(JavaScriptConfiguration.java:237) 09-30 23:05:57.867: 错误/AndroidRuntime(289): 在 com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.(JavaScriptEngine.java:117) 09-30 23:05:57.867: 错误/AndroidRuntime(289): 在 com.gargoylesoftware.htmlunit.WebClient.init(WebClient.java:215) 09-30 23:05:57.867: 错误/AndroidRuntime(289): 在 com.gargoylesoftware.htmlunit.WebClient.(WebClient.java:189) 09-30 23:05:57.867: 错误/AndroidRuntime(289): 在 com.mygo.HTMLUnitActivity.onCreate(HTMLUnitActivity.java:22) 09-30 23:05:57.867: 错误/AndroidRuntime(289): 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 09-30 23:05:57.867: 错误/AndroidRuntime(289): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
- 我应该降级 htmlunit 吗? (我使用的是 2.9)。
- 还有其他在 Android SDK 上使用 htmlunit 的解决方案吗?
我们将不胜感激。
【问题讨论】: