2011-03-07 3 views
1

나는 Xerces 2.9.1과 Xerces-J-2.11.0에서 같은 결과를 가지고 이것을 시도했다.이상한 Xerces 메소드 접근 에러

저는 XML 구문 분석을 위해 Xerces를 사용하여 Spring3 Webflow 응용 프로그램을 작성하고 있습니다. 귀 배포 할 때, 나는

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 

나는, 자바 Decompilor의 코드를 추적 xercesImpl.jar에 나는 DocumentBuilderFactoryImpl.setAttribute() 호출이 새로운 DocumentBuilderImpl을 만들려고 볼 수 있다면, 이것은이 IllegalAccessError의 원인이 될 것으로 보인다 문제를 얻을 . DocumentBuilderImpl의 생성자에는 기본 (패키지) 액세스가 있지만 DocumentBuilderImplDocumentBuilderFactoryImpl은 모두 같은 패키지 (org.apache.xerces.jaxp)에 있습니다.

내가 아는 한 오류가 발생했을 때 SecurityManager이 활성화되어 있지 않습니다 (그리고 SecurityManager이 메소드 액세스 권한에 영향을 주는지 확신 할 수 없으며 클래스 로딩을위한 것이라고 생각했습니다. 리소스 액세스 권한).

내가 할 수있는 아이디어 (덜 제한된 액세스 권한으로 xerces JAR을 다시 컴파일하는 것이 부족합니다. 문제의 근원을 해결하고 싶습니다. 해결할 수 없습니다.) 내가 할 수있는 표준 JAR).

필자는 스프링 3.0.5, OC4J 10.0.3.5.0 (Oracle XML 파서 대신 Xerces XML 파서를 사용하는 방법), Java 1.6.0 -21.

감사 그레이엄

+0

누가이 질문에 대한 질문을 거의하지 않고 마음에 드는 것으로 표시했습니다 . – GKelly

답변

2

당신은 크세르 크세스를 번들하고 있기 때문에 클래스 로더 문제가 발생하는; Java 1.6은 이미 Xerces를 번들로 제공합니다.

저는 xerces, 활성화 및 Java 1.6 이전의 외부 라이브러리에서 JRE에 번들로 제공되는 여러 "예기치 않은"문제가있었습니다. :

+0

그럼 JAR 파일을 번들링해서는 안됩니다.이 문제를 해결해 드리겠습니다. 감사합니다. – GKelly

+0

예 불행히도, 지금은 java에 번들 된 라이브러리 목록을 찾지 못했고 추가해서는 안됩니다. (. – Augusto

+0

감사합니다. xerces JAR에 대한 모든 참조를 제거하려고 시도했지만 지금 일해. – GKelly