1

我重新部署了我的应用程序(google appengine),它似乎工作正常,但是当我尝试解析 Xml 时,我得到: java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "accessClassInPackage.com.sun .org.apache.xerces.internal.parsers")

这是什么意思?以及我该如何解决?

在以前版本的应用程序上,我没有收到此错误。

在本地运行应用程序时,我没有收到此错误。

我做了一些小改动 - 我将一些数据从 UI 传递到数据存储区

下面是解析 XML 的代码:

public static <T extends BaseDataObject> T xml2Bean(Class<T> clazz,
        String xmlData) throws UnsupportedEncodingException, JAXBException {
    Reader reader = new StringReader(xmlData);
    JAXBContext context = getContext(clazz);
    Unmarshaller um = context.createUnmarshaller();
    return (T) um.unmarshal(reader);
}

我的猜测是谷歌曾经支持com.sun.org.apache.xerces.internal.parsers但现在他们不支持,而且我的旧代码仍然有效,因为它在仍然支持时被推送......

我怎样才能验证这个猜测?即在哪里可以找到不受支持的软件包列表?

我正在考虑删除 XML 代码并改用 json,如何确保支持 json?

4

2 回答 2

2

问题已解决:我已经下载了 xerces 并将 jars 添加到 war\WEB-INF\lib 和 eclipse 中的构建路径中。

我还升级到最新的 JDK (java 7)。

我不确定哪个解决了问题...

于 2013-10-28T10:00:42.937 回答
0

您的代码或代码的依赖项中的某些内容试图引用 package com.sun.org.apache.xerces.internal.parsers,这在 GAE 上是不允许的。只是一个猜测:也许一个依赖项已经升级并且这个依赖项正在尝试访问那个包。

于 2013-10-27T17:53:41.283 回答