Java 在Eclipse插件中使用Xalan

Java 在Eclipse插件中使用Xalan,java,eclipse-plugin,xalan,Java,Eclipse Plugin,Xalan,我在eclipse插件中使用xalan时遇到问题。 当我尝试通过以下方式创建factory实例时: TransformerFactory tFactory = TransformerFactory.newInstance("org.apache.xalan.processor.TransformerFactoryImpl", null); c = Class.forName("org.apache.xalan.processor.TransformerFactoryImpl"); Object

我在eclipse插件中使用xalan时遇到问题。
当我尝试通过以下方式创建factory实例时:

TransformerFactory tFactory = TransformerFactory.newInstance("org.apache.xalan.processor.TransformerFactoryImpl", null);
c = Class.forName("org.apache.xalan.processor.TransformerFactoryImpl");
Object o = c.newInstance();
我得到一个错误:

javax.xml.transform.TransformerFactoryConfigurationError: Provider org.apache.xalan.processor.TransformerFactoryImpl not found
...
插件类路径中有以下lib:xml-api.jar、xercesImpl.jar、serializer.jar、xalan.jar

我甚至不能通过以下方式创建类实例:

TransformerFactory tFactory = TransformerFactory.newInstance("org.apache.xalan.processor.TransformerFactoryImpl", null);
c = Class.forName("org.apache.xalan.processor.TransformerFactoryImpl");
Object o = c.newInstance();
它返回ClassNotFoundException

但我可以从同一个jar创建其他类的实例,并且可以在eclipse之外毫无问题地运行相同的代码

有什么想法吗


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

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

如果您使用的是JDK1.5或更高版本,请尝试删除
XMLAPI.jar
。Java1.4需要它来支持XML

更新1
好啊根据您的问题,我推断您正在编写eclipse插件。如果是,那么您是否使用
plugin.xml->Runtime->classpath
添加了上述JAR?如果没有,请尝试这样做。Eclipse插件只考虑其运行时->类路径项

更新2
在我看来,它仍然是一个类路径解决问题。不过,很难说为什么会这样。您还可以通过更改
plugin.xml->Runtime->classpath
中包含的JAR的顺序进行检查

希望这会有所帮助


PS:由于您正在进行eclipse插件开发,因此我建议您阅读本文

谢谢@Favonius的回答。我明白你的意思,把罐子拿走了,但不幸的是,它不起作用。还尝试了xalan、exerces和序列化程序插件,而不是普通libs。也没用。还有其他想法吗?@Leslie Norman:好的。根据您的问题,我推断您正在编写eclipse插件。如果是,那么您是否使用
plugin.xml->Runtime->classpath
添加了上述JAR?如果没有,请尝试这样做。Eclipse插件只考虑它的
runtime->classpath
条目。我在问题的底部添加了新的发现。请看一看。如果它改变了整个场景,我深表歉意。@Leslie Norman:在我看来,它仍然是一个类路径解决问题。不过,很难说为什么会这样。您还可以通过更改
plugin.xml->Runtime->classpath
@Leslie Norman:很高兴听到问题已经解决:)中包含的JAR的顺序进行检查。我已经更新了我的ans。谢谢。