java - Tomcat Web 应用程序 - 指定 TransformerFactoryImpl 类不起作用

标签 java tomcat xslt saxon

我需要在 webapp 中使用 xsl 转换,我决定使用 saxon 来实现 xml。我将 saxon(版本 9.1)作为依赖项包含在 pom.xml 中。但我仍然不断收到此错误 - Provider net.sf.saxon.TransformerFactoryImpl not found

我找到了这个线程, How to select saxon TransformerFactory in Java

并执行所有推荐的操作,设置属性,指定带有 saxon 实现类的服务文件。出于灵 active 原因,我无法直接创建 TransformerFactoryImpl 的实例。那么,我还有其他选择吗?

提前致谢

编辑:这是错误的堆栈跟踪 -

javax.xml.transform.TransformerFactoryConfigurationError: Provider net.sf.saxon.TransformerFactoryImpl not found
javax.xml.transform.TransformerFactory.newInstance(TransformerFactory.java:108)
com.mondeca.sesame.toolkit.repository.XMLtoRDFDataInjector.injectData(XMLtoRDFDataInjector.java:83)
com.mondeca.sesame.toolkit.repository.LocalMemoryRepositoryProvider.init(LocalMemoryRepositoryProvider.java:105)
org.datalift.modules.base.XmlConverter.applyXslTransformation(XmlConverter.java:192)
org.datalift.modules.base.XmlConverter.transformData(XmlConverter.java:204)
org.datalift.modules.base.XmlConverter.transformData(XmlConverter.java:174)
org.datalift.modules.base.XmlConverter.loadSourceData(XmlConverter.java:149)

从中很明显找不到saxon。但我就是不明白为什么!我也看到它被打包在jar文件中了!

最佳答案

我认为这对寻找解决方案的人很有用。早就解决了,这里忘记更新了。基本上,tomcat 会尝试用它自己的实现来覆盖任何 XML 实现。我使用的 tomcat(必须是 6.0.23)不包含最新的 XML API 来处理 XSLT 转换(我需要可以处理 XSLT2 的 API)。实际上 tomcat 在这里有一些奇怪的行为,它不会首先从类路径加载类,而是尝试从它自己的库中加载类(这反过来可能包含所有需要的 java 类),这不是加载类的自然顺序。因此,在 list 文件中指定无济于事。另一方面,我们可以通过在启动服务器时指定为一个选项来覆盖它。使用此选项作为服务器参数

-Djava.endorsed.dirs=$JAVA_ENDORSED_DIRS 

更多信息,tomcat official documentation关于这个问题

关于java - Tomcat Web 应用程序 - 指定 TransformerFactoryImpl 类不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8870242/

相关文章:

java.lang.ClassNotFoundException 即使我为类文件指定 -cp 参数

Tomcat keystore 异常

java - 如何替换 HttpServletResponse 输出流?

java - Selenium Actions 类无法在大于 3.1 的 selenium 版本中解析

java - 在 OSGi 框架中运行基于 SWT 的 GUI

java - Apache ProxyPass Tomcat

xslt - WiX - 根据环境将编译后的 web.config 复制到网站根目录

xml - 使用 XSLT 向上移动节点

javascript - 使用 javascript 漂亮地打印 XML

java - 使用 ActionListener 使用 Formatter 写入文件(JAVA)时出错