【问题标题】:ClassFormatError with Jsoup on Google App Engine 1.6.4 only on localhostGoogle App Engine 1.6.4 上 Jsoup 的 ClassFormatError 仅在本地主机上
【发布时间】:2012-04-16 00:27:00
【问题描述】:

在我的 Google App Engine 应用程序中,我使用 jsoup 库 (jsoup.org)。 我在 Eclipse 上安装了 GAE 的 1.6.4 SDK,并且代码仅在 localhost 上停止工作。如果我使用 GAE 1.6.3,appspot.com 上的应用程序运行良好,并且相同的应用程序在 localhost 中运行良好。

代码是(例如):

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

有人有同样的问题吗?我该如何解决?

【问题讨论】:

    标签: java google-app-engine localhost jsoup


    【解决方案1】:

    抱歉回答而不是评论! (我没有足够的声望。) Yoav A 提供的 jsoup-1.6.2-GAE.jar 非常好,但似乎有回归问题。 重现回归的程序如下

        String html = "<div>30&deg;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 项目 [link] (github.com/jhy/jsoup) 有一个 1.6.3 [PENDING] 版本,其中包含我的修复。我认为那个版本适合你
    【解决方案2】:

    从 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

    【讨论】:

      【解决方案3】:

      看看这个: http://www.4shared.com/folder/l8tNGCef/public.html

      有 2 个文件: 一个解决这个问题的固定jsoup jar 和源代码

      【讨论】:

        【解决方案4】:

        升级到 GAE 的 1.6.4 SDK 后,我也遇到了同样的情况。 对我来说导致异常的原因是

        Document document = Jsoup.parse(html);
        

        【讨论】:

          【解决方案5】:

          我认为 JVM 的限制大约是(每个方法 65,535 字节),因此您可能必须将长 Entity 类拆分()为多个方法

          【讨论】:

            猜你喜欢
            • 2012-07-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-02-09
            • 2016-05-05
            • 2013-08-07
            • 2013-11-01
            • 2016-09-02
            相关资源
            最近更新 更多