【发布时间】:2013-09-24 00:03:46
【问题描述】:
我有以下代码
SAXTransformerFactory stfactory;
stfactory = (SAXTransformerFactory) TransformerFactory.newInstance();
/// ClassLoaderUriResolver is another class.
stfactory.setURIResolver(new ClassLoaderUriResolver());
InputStream is = this.getClass().getClassLoader().getResourceAsStream("xsl/Hello.xsl");
StreamSource streamSource = new StreamSource(is);
mergeHandler = stfactory.newTransformerHandler(streamSource);
XMLReader xmlReader = XMLReaderFactory.createXMLReader();
还有一些代码.....
问题出在线路上 mergeHandler = stfactory.newTransformerHandler(streamSource);
当我在 JBOSS IDE 中将这个程序作为独立的 JAVA 程序运行时,使用相同的 jar 集
- xalan-2.7.0.jar
- xercesImpl-2.7.1.jar
- xml-apis-1.3.04.jar
- xml-apis-ext-1.3.04.jar
我看到调用 stfactory.newTransformerHandler(streamSource);
返回
org.apache.xalan.transformer.TransformerHandlerImpl
MY XLST 翻译可以作为一个简单的 java 程序正常工作
与在 Jboss AS 7 容器上运行时相同的代码 我看到调用 stfactory.newTransformerHandler(streamSource);
返回
org.apache.xalan.transformer.TransformerIdentityImpl(不是 TransformerHandlerImpl)
因此,当我在 Jboss AS 7 Container 上作为 Web 应用程序的一部分运行时,XSLT 转换没有发生,我没有看到任何错误。我的 XLS FO 文档未翻译。
如何强制代码使用 org.apache.xalan.transformer.TransformerHandlerImpl ?
【问题讨论】:
-
我猜一个 java 问题。两者在执行时的类路径是什么?
-
基于那个答案,我假设你不明白你在做什么。这个问题很简单,任何了解 Java 的人都会知道答案。再试一次......我问“两者的类路径是什么”我没有问你使用的是什么版本的 Java。
-
凯文,对不起,这是类路径。这是我的类路径中 jar 的完整列表。 version.JAXP=1.1 或更高版本 java.ext.dirs=C:\JAVA\jdk1.7.0_25\jre\lib\ext version.xerces2=Xerces-J 2.7.1 version.xerces1=not-present version.xalan2_2=Xalan Java 2.7.0 java.version=1.7.0_25 version.DOM=2.0 version.SAX=2.0 version.xalan2x=Xalan Java 2.7.0 java.class.path=C:\lib\xalan-2.7.0.jar;C :\lib\batik-util-1.7.jar;C:\lib\avalon-framework-impl-4.3.1.jar; C:\lib\fop-0.95.jar;C:\lib\xercesImpl-2.7.1.jar;C:\lib\xml-apis-1.3.04.jar;C:\lib\xml-apis-ext- 1.3.04.jar C:\lib\xmlgraphics-commons-1.3.1.jar
-
凯文,谢谢。我更深入地挖掘课程路径,并让它发挥作用。请看下面的答案。再次感谢。