Jon*_*han 5 java xslt tomcat jaxp
我有一个Tomcat 5.5 Web应用程序,它使用Apache Commons-Configuration库在运行时生成XML配置文件.反过来,Commons-Configuration使用javax.xml.transformJAXP API来完成此任务.
自升级到Java 7以来,操作失败,并显示以下错误消息:
Caused by: javax.xml.transform.TransformerFactoryConfigurationError: Provider org.apache.xalan.processor.TransformerFactoryImpl not found
at javax.xml.transform.TransformerFactory.newInstance(Unknown Source)
Run Code Online (Sandbox Code Playgroud)
在过去的版本中,我从未捆绑过xalan.jar,而是依赖于平台默认的XSLT实现.
我检查过的一些事情:
META-INF/services/javax.xml.transform.TransformerFactory我的任何应用程序JAR文件,库jar或Tomcat jar中都没有条目javax.xml.transform.TransformerFactory系统属性未设置(在通过JVisualVM运行时验证)jaxp.properties文件jre/lib运行with -Djaxp.debug=1会产生以下输出:
JAXP: find factoryId =javax.xml.transform.TransformerFactory
JAXP: loaded from fallback value: org.apache.xalan.processor.TransformerFactoryImpl
Run Code Online (Sandbox Code Playgroud)
这个后备价值来自哪里?Oracle发布了Xalan变压器,但由于1.7已将其重新打包为com.sun.org.apache.xalan.processor....不应该说是回退值?
自己发现了这个问题.事实证明我apache-tomcat-5.5.23-compat安装了文件,因为我从Java 1.4.2迁移.解决方案是删除$CATALINA_HOME/common/endorsed目录下的所有内容(特别是xercesImpl.jar和xml-apis.jar)和bin/jmx.jar文件.
| 归档时间: |
|
| 查看次数: |
9552 次 |
| 最近记录: |