NoClassDefFoundError: org/dom4j/io/SAXReader

NoClassDefFoundError: org/dom4j/io/SAXReader

我目前导入了以下内容

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 但结果还是一样 error.I 已经卡了几个小时了,任何帮助都非常重要赞赏。

当您 运行 一个带有 -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