奇怪的Xerces方法访问错误

时间:2011-03-07 15:09:52

标签: java spring xerces oc4j

我在Xerces 2.9.1和Xerces-J-2.11.0上都试过了这个结果。

我正在编写一个Spring3 Webflow应用程序,使用Xerces进行XML解析。在部署EAR时,我遇到了问题

Caused by: java.lang.IllegalAccessError: tried to access method org.apache.xerces.jaxp.DocumentBuilderImpl.<init>(Lorg/apache/xerces/jaxp/DocumentBuilderFactoryImpl;Ljava/util/Hashtable;Ljava/util/Hashtable;)V from class org.apache.xerces.jaxp.DocumentBuilderFactoryImpl
    at org.apache.xerces.jaxp.DocumentBuilderFactoryImpl.setAttribute(Unknown Source)
    at org.springframework.beans.factory.xml.DefaultDocumentLoader.createDocumentBuilderFactory(DefaultDocumentLoader.java:99)
    at org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:70)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:388)
    ... 30 more

如果我在Java Decompilor中跟踪代码,在xercesImpl.jar我可以看到DocumentBuilderFactoryImpl.setAttribute()调用尝试创建新的DocumentBuilderImpl,这似乎是IllegalAccessError的原因1}}。 DocumentBuilderImpl的构造函数具有默认(包)访问权限,但DocumentBuilderImplDocumentBuilderFactoryImpl都位于同一个包中(org.apache.xerces.jaxp)。

据我所知,错误时没有SecurityManager处于活动状态(我甚至不确定SecurityManager是否会影响方法访问权限,我认为仅用于类加载和资源访问权限。

任何想法我能做什么(没有重新编译xerces JAR,限制性较低的访问权限,我想解决问题的根源,而不是解决它!,我也更喜欢使用标准我可以在哪里JAR。

我应该提一下,我正在使用Spring 3.0.5,OC4J 10.0.3.5.0(使用Xerces XML解析器代替Oracle XML解析器)和Java 1.6.0- 21。

由于 格雷厄姆

1 个答案:

答案 0 :(得分:2)

你有一个类加载器问题,因为你正在捆绑Xerxes;和Java 1.6已经捆绑了Xerces。

我有很多“意外”的问题,包括xerces,激活以及我们在java 1.6之前外部并且现在捆绑在JRE中的一些其他库。 :(

相关问题