ClassFormatError с Jsoup в Google App Engine 1.6.4 только на локальном хосте - PullRequest
2 голосов
/ 02 апреля 2012

В моем приложении Google App Engine я использую библиотеку jsoup (jsoup.org). Я установил 1.6.4 SDK GAE на Eclipse, и код перестал работать только на localhost. Приложение на appspot.com работает хорошо, и то же приложение хорошо работает в localhost, если я использую GAE 1.6.3.

Код (например):

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

У кого-нибудь есть такая же проблема? Как я могу решить это?

Ответы [ 5 ]

3 голосов
/ 05 апреля 2012

Проверьте это: http://www.4shared.com/folder/l8tNGCef/public.html

есть 2 файла: фиксированный jsoup jar, который решает эту проблему, и исходные коды

1 голос
/ 08 мая 2012

Извините за ответ, а не за комментарий!(У меня недостаточно репутации.) Jsoup-1.6.2-GAE.jar, предоставленный Yoav A, очень хорош, но, похоже, имеет регрессионную проблему.Программа для воспроизведения регрессии ниже

    String html = "<div>30&deg;C</div>";
    Document doc = Jsoup.parseBodyFragment(html);
    System.out.println(doc.toString());

Когда используется оригинальный файл jsoup-1.6.2.jar, результат в порядке.При использовании jsoup-1.6.2-GAE.jar строка «30 ° C» будет искажена.

1 голос
/ 04 апреля 2012

То же самое случилось со мной после обновления до 1.6.4 SDK GAE. То, что вызвало исключение для меня, было

Document document = Jsoup.parse(html);
0 голосов
/ 16 апреля 2012

Существует патч для выпуска 1.6.4 для 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

0 голосов
/ 04 апреля 2012

Я думаю, что ограничения JVM примерно (65 535 байт на метод), поэтому вам, возможно, придется разделить () длинный класс Entity на несколько методов

...