2010-04-15 47 views
1

我已经实现了一个基于XSTL样式表转换XML的简单Web应用程序。它在我部署到Tomcat上的所有Windows服务器上工作正常,但在所有Linux系统上,我在XSLT上遇到编译错误。什么处理器是javax.xml.transform使用?

尽我所知,这是因为Java 1.6在javax.xml.transform背后没有使用相同的处理器。在一个Linux系统上,它是org.apache.xalan.xslt,版本2.4。

我无法弄清楚的是如何一般地找出任何给定的系统在javax.xml.transform后面使用什么。或者,如果任何人有任何暗示,我可以做什么来弄清楚这个问题,那也是很好的。

回答

0

由于jdk1.4 Java本身带有XML API实现。除非您特别认可并指示jvm使用“Xalan”或任何其他XML API实现,否则将使用这些内容。

我的猜测是,在你的linux系统中,你的jdk安装在jre/lib/endorsed文件夹中有Xalan和xml-api jar文件,或者当你启动你的服务器时你给出了vm参数-Djava.endorsed.dirs ......到Xalan罐子存在的路径。或者在您的Web应用程序中,您翻转了类加载的顺序以首先查看本地类,并且Xalan处于您的Web应用程序类路径中。

您可以使用其中一种方法重写默认情况下由jre给出的XML实现,并且您的Linux环境中很可能其中一种是正确的。