java - stax-utils.jar 中的 IndentingXMLStreamWriter 类出现 NoClassDefFoundError

标签 java xml eclipse eclipse-rcp stax

我正在使用 XmlStreamEventWriter 使用 StAX 解析器编写 XML 文件,stax-utils.jar 已正确添加到 Eclipse 中的类路径中。我想使用此 jar 文件中的 IndentingXMLStreamWriter 类,但不知何故它抛出以下异常:

java.lang.NoClassDefFoundError: javanet/staxutils/IndentingXMLStreamWriter
Caused by: java.lang.ClassNotFoundException: javanet.staxutils.IndentingXMLStreamWriter 
           cannot be found by RCP_PLUGIN_6.20.0.qualifier

引起异常的代码是:

XMLEventFactory eventFactory=XMLEventFactory.newInstance();
if(!tmpSettingsXml.exists())
    tmpSettingsXml.createNewFile();
XMLStreamWriter xmlStreamWriter=new IndentingXMLStreamWriter(XMLOutputFactory.newInstance().
                    createXMLStreamWriter(new FileOutputStream(tmpSettingsXml)));
xmlStreamWriter.writeStartDocument();

如果从工具的其他类调用包含“IndentingXMLStreamWriter”的方法,则会抛出异常,但是,如果从其他类中的 main() 调用此方法,则其工作正常,并且能够在 jar 中找到类。

有人可以建议这里出了什么问题吗?

最佳答案

Eclipse/RCP 插件在 OSGi 运行时中运行,它(几乎)完全根据插件 list (MANIFEST.MF 文件)控制其运行时类路径。您需要添加任何不是您自己的源的依赖项,而不是直接使用 Java 构建路径 UI。 Java 构建路径 UI 并未被锁定,因为插件项目仍然是 Java 项目,只是包含更多内容。

因此,删除添加到 Java 构建路径中的 jar,在插件 list 编辑器中打开 MANIFEST.MF 文件,然后将 jar 添加到“运行时”选项卡上的“类路径”部分。

The Plug-in Manifest Editor's Runtime page

关于java - stax-utils.jar 中的 IndentingXMLStreamWriter 类出现 NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42808151/

相关文章:

Eclipse C++ for Mac Unresolved 错误

java - 在android中删除SQLite数据库中的条目

asp.net - 是否可以从 asmx 生成 xsd

java - 如何在 JavaFX 桌面应用程序中使用 Google Maps API?

java - Spring 4 未启动 Hibernate 5 事务

java - 连续读取套接字的所有输入

xml - 戈朗 : structure to generate/parse both XML and JSON

由于错误,数据中包含 NULL 的 MySQL XML 导出不会重新导入

eclipse - 无法将本地 git 导入 Eclipse 以创建新项目(抛出错误 "Connecting Git team provider failed")

java - 在单元测试中验证私有(private)方法调用的顺序