appengine错误 - java.security.AccessControlException:访问被拒绝(“java.lang.RuntimePermission”“accessClassInPackage.com.sun.org.apache.xerces

时间:2013-10-27 17:44:58

标签: google-app-engine

我重新部署了我的应用程序(谷歌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);
}

我的猜测是Google用来支持com.sun.org.apache.xerces.internal.parsers,但现在他们没有,我的旧代码仍在运行,因为它仍被支持时被推送...

我该如何验证这个猜测?即哪里可以找到不支持的包列表?

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

2 个答案:

答案 0 :(得分:2)

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

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

我不确定其中哪一个解决了这个问题...

答案 1 :(得分:0)

代码中的某些内容或代码的依赖项正在尝试引用GAE上不允许的包com.sun.org.apache.xerces.internal.parsers。只是一个猜测:可能已经升级了依赖项,并且此依赖项正在尝试访问该程序包。