Apache POI Java程序在IDE(Eclipse)中运行良好但在我尝试将其作为可运行的jar运行时遇到NoClassDefFoundError

时间:2015-09-18 18:57:45

标签: java eclipse jar classnotfoundexception

我遇到了一个非常奇怪的问题,即我的程序在Eclipse中运行但是并没有很好地运行作为一个可运行的jar导出。我得到了ClassNotFoundException

C:\Users\43156557\workspace\CAF3_IDE\MFTRelease>java -jar MSDocWriter.jar
Exception in thread "main" java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoa
der.java:58)
Caused by: java.lang.NoClassDefFoundError: org/dom4j/DocumentException
        at org.apache.poi.openxml4j.opc.OPCPackage.init(OPCPackage.java:149)
        at org.apache.poi.openxml4j.opc.OPCPackage.<init>(OPCPackage.java:136)
        at org.apache.poi.openxml4j.opc.Package.<init>(Package.java:54)
        at org.apache.poi.openxml4j.opc.ZipPackage.<init>(ZipPackage.java:81)
        at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:220)
        at org.apache.poi.util.PackageHelper.open(PackageHelper.java:39)
        at org.apache.poi.xwpf.usermodel.XWPFDocument.<init>(XWPFDocument.java:1
11)
        at com.hsbc.glt.automation.test.mft.util.MSDocumentWriter.initializeDocu
ment(MSDocumentWriter.java:92)
        at com.hsbc.glt.automation.test.mft.util.MSDocumentWriter.main(MSDocumen
tWriter.java:70)
        ... 5 more
Caused by: java.lang.ClassNotFoundException: org.dom4j.DocumentException
        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 java.lang.ClassLoader.loadClass(Unknown Source)
        ... 14 more

C:\Users\43156557\workspace\CAF3_IDE\MFTRelease>

1 个答案:

答案 0 :(得分:0)

ClassNotFoundException 通常表示JVM无法从定义的类路径加载所需的类文件(路径不正确或路径中不存在类/ jar)。

当前场景中的错误可能是因为在创建jar文件时错过了包含Dependency库。因为在eclipse上你有正确的类路径,包括那些完美的工作。

确保您检查&#34;将所需包装包装成生成的JAR&#34; ,这将自动包含来自eclipse构建路径的jar文件。

有关详细信息,这可能会派上用场Include Dependent Jars in Executable Jar