仅在本地主机上在Google App Engine 1.6.4上使用Jsoup的ClassFormatError
在我的Google App Engine应用程序中,我使用jsoup库(jsoup.org)。 我在Eclipse上安装了GAE的1.6.4 SDK,代码仅在本地主机上停止工作。如果我使用GAE 1.6.3,appspot.com上的应用程序运行良好,并且相同的应用程序在localhost中运行良好。仅在本地主机上在Google App Engine 1.6.4上使用Jsoup的ClassFormatError
的代码是(例如):
string = Jsoup.clean(string, Whitelist.none());
例外包括:
java.lang.ClassFormatError: Invalid method Code length 73191 in class file org/jsoup/nodes/Entities
或(当我执行该代码的第二时间)
java.lang.NoClassDefFoundError: Could not initialize class org.jsoup.nodes.Entities$EscapeMode
有谁有同样的问题?我该如何解决它?
我认为JVM极限是约(每方法65,535字节),所以你可能要拆()长实体类成多个方法
同样的事情发生在我升级到1.6.4 SDK后的GAE。 是什么原因造成的异常对我来说是
Document document = Jsoup.parse(html);
有是针对1.6.4.1发布到1.6.4.1的补丁,可解决此类和其他类加载和性能问题(http://code.google.com/p/googleappengine/issues/detail?id=7282)
最新的SDK链接: https://developers.google.com/appengine/downloads#Google_App_Engine_SDK_for_Java
对不起,我回答,而不是评论! (我没有足够的声望。) Yoav A提供的jsoup-1.6.2-GAE.jar非常出色,但它似乎有回归问题。 重现回归程序低于
String html = "<div>30°C</div>";
Document doc = Jsoup.parseBodyFragment(html);
System.out.println(doc.toString());
当使用原jsoup-1.6.2.jar,结果是OK。当使用jsoup-1.6.2-GAE.jar时,字符串'30 ° C'会变成乱码。
检查出GitHub Jsoup项目[链接](https://github.com/jhy/jsoup) 有一个版本1.6.3 [PENDING]与我的修复程序。 我认为这个版本适合你 – 2012-05-19 13:29:11
你已经保存了我的一天:) – 2012-05-04 07:17:07