我实现了一个简单的 Web 应用程序,它基于 XSTL 样式表转换 XML。它在我部署的所有 Windows 服务器(Tomcat)上运行良好,但在所有 Linux 系统上,我在 XSLT 上遇到编译错误。
据我所知,这是因为 Java 1.6 没有在 javax.xml.transform 后面使用相同的处理器。在一个 Linux 系统上,它是 org.apache.xalan.xslt,版本 2.4。
我不明白的是如何一般地找出任何给定系统在 javax.xml.transform 后面使用的内容。
或者,如果有人对我还可以做什么来解决问题有任何提示,那也很好。
最佳答案
从jdk1.4开始,Java本身就附带了XML API实现。除非您明确认可并指示 jvm 使用“Xalan”或任何其他 XML API 实现,否则将使用哪个。
我的猜测是,在您的 Linux 系统中,您的 jdk 安装要么在 jre/lib/endorsed 文件夹中包含 Xalan 和 xml-api jar,要么在启动服务器时指定了 vm 参数 -Djava.endorsed.dirs。 .. 到 Xalan jar 存在的路径。或者在您的 Web 应用程序中,您翻转了类加载的顺序以首先查看本地类,并且 Xalan 位于您的 Web 应用程序类路径中。
您可以使用其中一种方法覆盖 jre 默认给出的 XML 实现,并且其中一种方法很可能适用于您的 Linux 环境。
关于java - javax.xml.transform 使用什么处理器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2647097/