2010-04-15 60 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環境中很可能其中一種是正確的。