런타임시 XML 구성 파일을 생성하는 데 Apache Commons-Configuration 라이브러리를 사용하는 Tomcat 5.5 웹 응용 프로그램이 있습니다. Commons-Configuration은이를 위해 javax.xml.transform
JAXP API를 사용합니다.기본적으로 잘못된 구현을 사용하는 JAXP XSLT 변환기
자바 7로 업그레이드 이후 작업이 다음과 같은 오류 메시지와 함께 실패합니다
Caused by: javax.xml.transform.TransformerFactoryConfigurationError: Provider org.apache.xalan.processor.TransformerFactoryImpl not found
at javax.xml.transform.TransformerFactory.newInstance(Unknown Source)
이전 버전에서는 내가 대신 플랫폼의 디폴트 XSLT 구현에 의존, xalan.jar을 번들 적이 없어요.
어떤 것들은 제가 확인했습니다
- 내 응용 프로그램의 JAR 파일, 라이브러리 항아리의, 또는
javax.xml.transform.TransformerFactory
시스템 속성이 설정되지 - 톰캣 항아리에 (에서 확인 더
META-INF/services/javax.xml.transform.TransformerFactory
항목이 없습니다 JVisualVM을 통해 런타임) - 0으로 프로그램 실행
jre/lib
디렉토리
에는 jaxp.properties
파일이 없습니다은 다음 출력을 생성합니다.
JAXP: find factoryId =javax.xml.transform.TransformerFactory
JAXP: loaded from fallback value: org.apache.xalan.processor.TransformerFactoryImpl
이 대체 값은 어디에서 오는가? 오라클은 Xalan 트랜스 포머를 제공하지만, 1.7 이후에는 com.sun.org.apache.xalan.processor...
으로 리 패키지되었습니다. 은이 대체 값이 아니어야합니까?
'CATALINA_HOME/lib'을 확인 했습니까? – Brad
Tomcat 5.5는'$ CATALINA_HOME/lib'을 사용하지 않습니다. Afaik는 Tomcat 6 이상입니다. 나는'$ CATALINA_HOME/server','common','shared'를 체크하지 않았습니다. – Jonathan
'org.apache.xalan.processor.TransformerFactoryImpl' 클래스는 이전 JDK1.4 설정에서 나왔을 수 있습니다. 그래서 여러분의 어딘가에'CLASSPATH'에 어항 xalan.jar이있을 것으로 기대하고 있습니다. – Brad