2011-01-14 67 views
0

我在使用Eclipse插件中的xalan時遇到問題。
當我試圖通過創建工廠實例:在Eclipse插件中使用Xalan

TransformerFactory tFactory = TransformerFactory.newInstance("org.apache.xalan.processor.TransformerFactoryImpl", null); 

我得到錯誤:

javax.xml.transform.TransformerFactoryConfigurationError: Provider org.apache.xalan.processor.TransformerFactoryImpl not found 
... 

我有以下的類路徑的插件庫:XML-apis.jar,xercesImpl.jar,serializer.jar ,xalan.jar

我甚至無法通過創建類的實例:

​​

它返回ClassNotFoundException

但我可以從同一個jar創建其他類的實例,並且可以在eclipse之外運行相同的代碼而不會出現問題。

有什麼想法?

編輯: TransformerFactory實例化類(比如說「class1」)是在插件類路徑中添加的外部庫的一部分,而xalan.jar也在插件類路徑中。如果我將這個「class1」移動到插件中,它會發現提供程序並正常工作。

回答

1

儘管我曾經見過這個問題,但我不太確定我是如何解決它的。

如果您使用的是JDK 1.5或更高版本,請嘗試刪除xml-apis.jar。 Java 1.4需要支持XML。

更新1


確定。從你的問題中,我推斷你正在編寫一個eclipse插件。如果是,那麼您是否使用 plugin.xml->Runtime->classpath添加了上述罐子?如果不嘗試這樣做。 Eclipse插件只考慮其runtime->類路徑條目

更新2


對我來說,仍然顯示爲一個類路徑解析問題。雖然,很難說爲什麼會發生。試一試,您也可以通過更改 plugin.xml->Runtime->classpath中包含的罐子的順序來檢查。

希望這會有所幫助。

PS:由於您正在開發eclipse插件開發工具,因此我建議您閱讀這篇文章Eclipse - a tale of two VMs and many classloaders

+0

謝謝@Favonius您的答案。明白了你的觀點,並刪除了所說的罐子,但不幸的是,它沒有奏效。還試用了xalan,excrces和serializer插件,而不是普通的libs。也沒有幫助。任何其他想法? – WSK 2011-01-14 20:36:26