0

我在 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

我什至无法通过以下方式创建类实例:

c = Class.forName("org.apache.xalan.processor.TransformerFactoryImpl");
Object o = c.newInstance();

它返回 ClassNotFoundException

但是我可以从同一个 jar 中创建其他类的实例,并且可以在 eclipse 之外运行相同的代码而不会出现问题。

任何的想法?

编辑: TransformerFactory 实例化类(比如“class1”)是插件类路径中添加的外部库的一部分,而 xalan.jar 也在插件类路径中。如果我将这个“class1”移动到插件中,它会找到提供者并且工作正常。

4

1 回答 1

1

虽然我曾经见过这个问题,但我不太确定我是如何解决的。

如果您使用的是 JDK 1.5 或更高版本,请尝试删除xml-apis.jar. Java 1.4 需要它来支持 XML。

更新 1


行。从你的问题我推断你正在写一个eclipse插件。如果是,那么您是否使用添加了上述罐子plugin.xml->Runtime->classpath?如果没有尝试这样做。Eclipse 插件只考虑它的 runtime->classpath 条目

更新 2


对我来说,它仍然显示为类路径解析问题。虽然,很难说它为什么会发生。尝试一下,您还可以通过更改包含的 jar 的顺序来检查plugin.xml->Runtime->classpath.

希望这会有所帮助。

PS:由于您正在从事 Eclipse 插件开发,因此我建议您阅读这篇文章Eclipse - a tale of two VMs and many classloaders

于 2011-01-14T20:12:31.307 回答