2011-01-14 51 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