当我运行简单的函数来更新没有jar的dom xml时,它会正确运行。如果我用许多jar将它的代码放入现有的项目中,就会得到这个异常
线程“main”java.lang.RuntimeException中的异常:
net.sf.saxon.trans.xpathexception:无法处理domsource:
检查saxon9-dom.jar是否在类路径上
在这里
transformer.transform(source, result);
在哪里?
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(docBuilder.parse(filepath));
在不引入对this.jar的依赖性的情况下,如何解决这个问题?谢谢。
最佳答案
从TransformerFactory.html#newInstance()
的api文档中,我们可以看到有几种方法可以实现这一点。
如果您有任何其他转换器实现,例如xalan,请将其jar移到类路径的开头。
添加一个jvm选项:-Djavax.xml.transform.TransformerFactory=<any transformer class you need>
。
在jre目录的属性文件“lib/jaxp.properties”中指定属性。
制作一个只有一个文件META-INF\services\javax.xml.transform.TransformerFactory
的假jar,这个文件只包含jdk:com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl
的默认转换器工厂。然后将其添加到类路径的开头。