NoClassDefFoundError:org / dom4j / io / SAXReader

时间:2015-06-03 06:22:16

标签: java eclipse batch-file jar dom4j

我目前已导入以下内容

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

我在 BATCH file 的帮助下运行该程序,但它正在抛出以下 errors -

C:\AISHU\WEB SERVICES>java  -jar webservices.jar
C:\AISHU\TEST FOLDER\formteest\fulltestxsd.xsd
Exception in thread "main" java.lang.NoClassDefFoundError:org/dom4j/io/SAXReader
        at XsdToXmlActual.main(XsdToXmlActual.java:29)
Caused by: java.lang.ClassNotFoundException: org.dom4j.io.SAXReader
        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)
        ... 1 more

C:\AISHU\WEB SERVICES>pause
Press any key to continue . . .

但是当我在 Eclipse 中运行它时,它的工作正常。我在配置构建路径时将其添加为 external JAR 。因此,在 .classpath file 已经存在的位置。

<classpathentry kind="lib" path="C:/Users/Aishu/Downloads/dom4j-1.6.1.jar"/>
<classpathentry kind="lib" path="C:/Users/Aishu/Downloads/jaxen-1.1-beta-6.jar"/>

我已尝试重新安装 dom4j ,但仍会导致同样的错误。我已经坚持了几个小时,非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

使用-jar选项运行程序时,将其作为executable jar运行。在这种情况下,解析类路径的规则是不同的。 Java将忽略-cp-classpath选项以及CLASSPATH环境变量,它只会查看jar清单文件中定义的类路径。

您必须将必要的jar文件放在清单文件的类路径中。清单文件应如下所示:

Manifest-Version: 1.0
Main-Class: XsdToXmlActual
Class-Path: dom4j-1.6.1.jar jaxen-1.1-beta-6.jar

将两个jar文件放在与您自己的jar文件相同的目录中,然后使用-jar选项运行您自己的jar文件:

java -jar webservices.jar

请参阅:Adding Classes to the JAR File's Classpath