java - 在 Eclipse 插件中使用 Xalan

标签 java eclipse-plugin 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

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

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/

相关文章:

java - 在扫描仪中使用分隔符;忽略空格和换行符

java - 如何使用 spring mvc 在 REST POST 方法中传递 List<>

eclipse - 将旧插件复制到新安装的eclipse中的简便方法

android - LogCat 中的各种颜色表示什么?

java - eclipse 集成开发环境 : install set of plugins

java - org.apache.xalan.processor.TransformerFactoryImpl 上的 AbstractMethodError

security - 变压器配置异常 : Cannot set the feature for Transformer

JFrame 中的 JavaFX 菜单

xml - 为什么 Apache Xerces/Xalan 向我的序列化输出添加额外的回车符?

java - 尝试打印后序和中序但不知道该怎么做