本文介绍了DOMSource无法处理:检查saxon9-dom.jar是否在类路径上的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
当我运行简单的功能来更新没有jar的dom xml,它运行正常。如果我把代码放在现有的项目中,有很多jar,我得到这个例外
When I run simple function for updating dom xml with no jars, it runs correctly. If I put it code into existing project with many jars, I get this exception
这里
transformer.transform(source, result);
其中
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(docBuilder.parse(filepath));
如何解决这个没有引用依赖这个.jar? Thanx。
how can I solve this without introdicing dependency on this .jar? Thanx.
推荐答案
从API文档我们可以看到有几种方法可以实现这一点。
From API doc for TransformerFactory.html#newInstance()
, we can see that there are several ways to achieve this.
- 如果您有任何其他变压器实现,例如 xalan
- 添加JVM选项:
-Djavax.xml.transform.TransformerFactory =<任何变换器类您需要>
。 - 在JRE目录中的属性文件lib / jaxp.properties中指定属性。
- 只使用一个文件
META-INF\services\javax.xml.transform.TransformerFactory
制作假JAR,并且此文件仅包含JDK的默认变压器工厂:com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl
。然后将其添加到类路径的开头。
- If you have any other transformer implementation, for example, xalan, move its JAR's to the beginning of classpath.
- Add a JVM option:
-Djavax.xml.transform.TransformerFactory=<any transformer class you need>
. - Specify the property in the properties file "lib/jaxp.properties" in the JRE directory.
- Make a fake JAR with only one file
META-INF\services\javax.xml.transform.TransformerFactory
and this file only contains the default transformer factory of JDK:com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl
. And then add it to the beginning of the classpath.
这篇关于DOMSource无法处理:检查saxon9-dom.jar是否在类路径上的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!