我在 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”移动到插件中,它会找到提供程序并正常工作。
最佳答案
虽然我曾经见过这个问题,但我不太确定我是如何解决的。
如果您使用的是 JDK 1.5 或更高版本,请尝试删除 xml-apis.jar
。 Java 1.4 需要支持 XML。
更新 1
<小时/> 好的。从你的问题我推断你正在写一个eclipse插件。如果是,那么您是否使用plugin.xml->Runtime->classpath
添加了上述 jar?如果没有尝试这样做。 Eclipse 插件仅考虑其运行时->类路径条目
更新2
<小时/> 对我来说,它仍然显示为类路径解析问题。不过,很难说为什么会发生这种情况。为了尝试,您还可以通过更改plugin.xml->Runtime->classpath
中包含的 jar 的顺序进行检查。
希望这会有所帮助。
PS:由于您正在从事 eclipse 插件开发,因此我建议您阅读这篇文章 Eclipse - a tale of two VMs and many classloaders 。
关于java - 在 Eclipse 插件中使用 Xalan,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4694747/