我重新部署了我的应用程序(谷歌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?
答案 0 :(得分:2)
问题解决了:我已经下载了xerces并将jar添加到war \ WEB-INF \ lib和eclipse中的构建路径。
我也升级到最新的JDK(java 7)。
我不确定其中哪一个解决了这个问题...
答案 1 :(得分:0)
代码中的某些内容或代码的依赖项正在尝试引用GAE上不允许的包com.sun.org.apache.xerces.internal.parsers
。只是一个猜测:可能已经升级了依赖项,并且此依赖项正在尝试访问该程序包。