使用 Apache ODF 工具包获取 java.lang.NoClassDefFoundError: org/apache/xerces/dom/ElementNSImpl

Posted

技术标签:

【中文标题】使用 Apache ODF 工具包获取 java.lang.NoClassDefFoundError: org/apache/xerces/dom/ElementNSImpl【英文标题】:Getting java.lang.NoClassDefFoundError: org/apache/xerces/dom/ElementNSImpl with Apache ODF Toolkit 【发布时间】:2013-08-09 13:35:35 【问题描述】:

我正在尝试使用Apache ODF Toolkit 读取ods 文件。我在尝试使用以下代码加载电子表格时收到java.lang.NoClassDefFoundError 错误-

SpreadsheetDocument data = SpreadsheetDocument.loadDocument(file);

下面是错误跟踪-

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/xerces/dom/ElementNSImpl
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(Unknown Source)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$000(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(Unknown Source)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$000(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at test.read.ODSFile.ReadODS.main(ReadODS.java:33)
Caused by: java.lang.ClassNotFoundException: org.apache.xerces.dom.ElementNSImpl
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 25 more

下面是项目结构,它显示了类路径-

是否缺少任何依赖项?

【问题讨论】:

【参考方案1】:

您的代码似乎找不到该类: 引起:java.lang.ClassNotFoundException: org.apache.xerces.dom.ElementNSImpl

来自ODF Toolkit

注意:ODFDOM 需要 Apache Xerces。 jar 文件 xercesImpl.jar 也必须存在于 odfxsltrunner.jar 文件旁边的文件夹 lib 中,或者它必须位于类路径中。 ODF XSLT Runner NetBeans 项目在运行时类路径中包含对 xersesImpl.jar 的引用,必须在签出项目后对其进行调整。

【讨论】:

以上是关于使用 Apache ODF 工具包获取 java.lang.NoClassDefFoundError: org/apache/xerces/dom/ElementNSImpl的主要内容,如果未能解决你的问题,请参考以下文章

JAVA ODFDOM:如何从 ODF 表中获取整数值

ofd文件怎么打开?

使用php将mysql数据导出到ODF

Java实现FTP上传下载功能

深度好文|Sharding-Sphere在甜橙金融的应用性能监控实践(ODF强烈推荐)

如何使用 API 覆盖 ODF 根 RSID