Странная ошибка доступа к методу Xerces - PullRequest
1 голос
/ 07 марта 2011

Я пробовал это как на 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, в xercesImpl.jar я вижу, что вызов DocumentBuilderFactoryImpl.setAttribute() пытается создать новый DocumentBuilderImpl, этокажется, причина IllegalAccessError.Конструктор для DocumentBuilderImpl имеет доступ по умолчанию (пакет), но оба DocumentBuilderImpl и DocumentBuilderFactoryImpl находятся в одном пакете (org.apache.xerces.jaxp).

Насколько я знаю, тамSecurityManager не активен во время ошибки (и я даже не уверен, повлияет ли SecurityManager на права доступа к методу, я думал, что это только для загрузки классов и прав доступа к ресурсам).

Любые идеи, которые я могу сделать (кроме перекомпиляции JAR-файла xerces с менее ограничивающими правами доступа, я бы хотел разобраться в корне проблемы, а не обходить ее без ограничений !, Я бы также предпочел использовать стандартные JARгде я могу).

Я должен упомянуть, я использую Spring 3.0.5, OC4J 10.0.3.5.0 (с возможностью обхода использовать синтаксический анализатор Xerces XML вместо синтаксического анализатора Oracle XML) и Java 1.6.0-21.

Спасибо, Грэм

1 Ответ

2 голосов
/ 07 марта 2011

У вас проблема с загрузчиком классов, потому что вы связываете Xerxes;а Java 1.6 уже в комплекте Xerces.

У меня было много «неожиданных» проблем с xerces, активацией и несколькими другими библиотеками, которые мы выгрузили до java 1.6 и теперь включены в JRE.(

...