gpt4 book ai didi

java - 在 IDE 外部执行时出现 NoClassDefFoundError: org/docx4j/openpackaging/exceptions/Docx4JException

转载 作者:行者123 更新时间:2023-12-01 09:44:30 25 4
gpt4 key购买 nike

我目前正在使用 Apache POI 和 docx4j 构建一个小型 java 应用程序,它可以保护 word 文档。在我的 IDE (Netbeans 8.1) 中构建和运行 Maven 项目时执行。

从命令行启动类时,会抛出 org/docx4j/openpackaging/exceptions/Docx4JExceptionjava.lang.NoClassDefFoundError

$ java -jar DocxProtect-1.0-SNAPSHOT.jar Error: A JNI error has occurred, please check your installation and try again Exception in thread "main" java.lang.NoClassDefFoundError: org/docx4j/openpackaging/exceptions/Docx4JException at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) at java.lang.Class.privateGetMethodRecursive(Class.java:3048) at java.lang.Class.getMethod0(Class.java:3018) at java.lang.Class.getMethod(Class.java:1784) at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544) at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526) Caused by: java.lang.ClassNotFoundException: org.docx4j.openpackaging.exceptions.Docx4JException at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 7 more

我确实使用 Maven 构建了一个 fat-jar,其中包含所有依赖项。从 IDE 运行项目时,它使用以下命令;

/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/bin/java -classpath /Users/petervannes/NetBeansProjects/DocxProtect/target/classes:/Users/petervannes/.m2/repository/org/apache/poi/poi/3.14/poi-3.14.jar:/Users/petervannes/.m2/repository/commons-codec/commons-codec/1.10/commons-codec-1.10.jar:/Users/petervannes/.m2/repository/org/docx4j/docx4j/3.2.2/docx4j-3.2.2.jar:/Users/petervannes/.m2/repository/org/plutext/jaxb-svg11/1.0.2/jaxb-svg11-1.0.2.jar:/Users/petervannes/.m2/repository/org/plutext/jaxb-xslfo/1.0.1/jaxb-xslfo-1.0.1.jar:/Users/petervannes/.m2/repository/org/plutext/jaxb-xmldsig-core/1.0.0/jaxb-xmldsig-core-1.0.0.jar:/Users/petervannes/.m2/repository/net/engio/mbassador/1.1.10/mbassador-1.1.10.jar:/Users/petervannes/.m2/repository/org/slf4j/slf4j-api/1.7.5/slf4j-api-1.7.5.jar:/Users/petervannes/.m2/repository/org/slf4j/jcl-over-slf4j/1.7.5/jcl-over-slf4j-1.7.5.jar:/Users/petervannes/.m2/repository/org/slf4j/slf4j-log4j12/1.7.5/slf4j-log4j12-1.7.5.jar:/Users/petervannes/.m2/repository/log4j/log4j/1.2.17/log4j-1.2.17.jar:/Users/petervannes/.m2/repository/commons-lang/commons-lang/2.4/commons-lang-2.4.jar:/Users/petervannes/.m2/repository/commons-io/commons-io/1.3.1/commons-io-1.3.1.jar:/Users/petervannes/.m2/repository/org/apache/xmlgraphics/xmlgraphics-commons/1.5/xmlgraphics-commons-1.5.jar:/Users/petervannes/.m2/repository/org/apache/xmlgraphics/fop/1.1/fop-1.1.jar:/Users/petervannes/.m2/repository/org/apache/xmlgraphics/batik-svg-dom/1.7/batik-svg-dom-1.7.jar:/Users/petervannes/.m2/repository/org/apache/xmlgraphics/batik-anim/1.7/batik-anim-1.7.jar:/Users/petervannes/.m2/repository/org/apache/xmlgraphics/batik-css/1.7/batik-css-1.7.jar:/Users/petervannes/.m2/repository/org/apache/xmlgraphics/batik-dom/1.7/batik-dom-1.7.jar:/Users/petervannes/.m2/repository/org/apache/xmlgraphics/batik-parser/1.7/batik-parser-1.7.jar:/Users/petervannes/.m2/repository/org/apache/xmlgraphics/batik-util/1.7/batik-util-1.7.jar:/Users/petervannes/.m2/repository/org/apache/xmlgraphics/batik-bridge/1.7/batik-bridge-1.7.jar:/Users/petervannes/.m2/repository/org/apache/xmlgraphics/batik-script/1.7/batik-script-1.7.jar:/Users/petervannes/.m2/repository/org/apache/xmlgraphics/batik-js/1.7/batik-js-1.7.jar:/Users/petervannes/.m2/repository/org/apache/xmlgraphics/batik-xml/1.7/batik-xml-1.7.jar:/Users/petervannes/.m2/repository/org/apache/xmlgraphics/batik-awt-util/1.7/batik-awt-util-1.7.jar:/Users/petervannes/.m2/repository/org/apache/xmlgraphics/batik-gvt/1.7/batik-gvt-1.7.jar:/Users/petervannes/.m2/repository/org/apache/xmlgraphics/batik-transcoder/1.7/batik-transcoder-1.7.jar:/Users/petervannes/.m2/repository/org/apache/xmlgraphics/batik-svggen/1.7/batik-svggen-1.7.jar:/Users/petervannes/.m2/repository/org/apache/xmlgraphics/batik-extension/1.7/batik-extension-1.7.jar:/Users/petervannes/.m2/repository/org/apache/xmlgraphics/batik-ext/1.7/batik-ext-1.7.jar:/Users/petervannes/.m2/repository/org/apache/avalon/framework/avalon-framework-api/4.3.1/avalon-framework-api-4.3.1.jar:/Users/petervannes/.m2/repository/org/apache/avalon/framework/avalon-framework-impl/4.3.1/avalon-framework-impl-4.3.1.jar:/Users/petervannes/.m2/repository/xalan/xalan/2.7.1/xalan-2.7.1.jar:/Users/petervannes/.m2/repository/xalan/serializer/2.7.1/serializer-2.7.1.jar:/Users/petervannes/.m2/repository/net/arnx/wmf2svg/0.9.0/wmf2svg-0.9.0.jar:/Users/petervannes/.m2/repository/org/apache/poi/poi-scratchpad/3.8/poi-scratchpad-3.8.jar:/Users/petervannes/.m2/repository/org/antlr/antlr-runtime/3.3/antlr-runtime-3.3.jar:/Users/petervannes/.m2/repository/org/antlr/stringtemplate/3.2.1/stringtemplate-3.2.1.jar:/Users/petervannes/.m2/repository/antlr/antlr/2.7.7/antlr-2.7.7.jar:/Users/petervannes/.m2/repository/com/google/guava/guava/17.0/guava-17.0.jar com.reddipped.docxprotect.DocxProtect

因此,不是执行 fat jar,而是执行编译后的类并使用项目中 lib 文件夹中的类。

我比较了 fat-jar 的 MANIFEST 中的所有类和从 Netbeans 执行时的类路径。两者是相同的。令我惊讶的是,NoClassDefFoundError 是为包含在 jar 中的类引发的。

有什么想法、提示、技巧来解决这个问题吗?干杯,彼得

==更新1 ==

MANIFEST.MF 中的类路径格式似乎很奇怪。 classtpath 的每一新行似乎都有一个缩进字符,它会中断 jar 的路径。

根据JAR File Specification jar 文件之间应该有空格,而不是文件名中。

Class-Path: The value of this attribute specifies the relative URLs of the extensions or libraries that this application or extension needs. URLs are separated by one or more spaces. The application or extension class loader uses the value of this attribute to construct its internal search path.

list 版本:1.0 builder :petervannes类路径:lib/poi-3.14.jar lib/commons-codec-1.10.jar lib/docx4j-3.2 .2.jar lib/jaxb-svg11-1.0.2.jar lib/jaxb-xslfo-1.0.1.jar lib/jaxb-xml dsig-core-1.0.0.jar lib/mbasador-1.1.10.jar lib/slf4j-api-1.7.5.jar lib/jcl-over-slf4j-1.7.5.jar lib/slf4j-log4j12-1.7.5.jar lib/log4j-1.jar 2.17.jar lib/commons-lang-2.4.jar lib/commons-io-1.3.1.jar lib/xmlgra phics-commons-1.5.jar lib/fop-1.1.jar lib/batik-svg-dom-1.7.jar lib/b atik-anim-1.7.jar lib/batik-css-1.7.jar lib/batik-dom-1.7.jar lib/bat ik-parser-1.7.jar lib/batik-util-1.7.jar lib/batik-bridge-1.7.jar lib/batik-script-1.7.jar lib/batik-js-1.7.jar lib/batik-xml-1.7.jar lib/ batik-awt-util-1.7.jar lib/batik-gvt-1.7.jar lib/batik-transcoder-1.7 .jar lib/batik-svggen-1.7.jar lib/batik-extension-1.7.jar lib/batik-e xt-1.7.jar lib/avalon-framework-api-4.3.1.jar lib/avalon-framework-im pl-4.3.1.jar lib/xalan-2.7.1.jar lib/serializer-2.7.1.jar lib/wmf2svg -0.9.0.jar lib/poi-scratchpad-3.8.jar lib/antlr-runtime-3.3.jar lib/s tringtemplate-3.2.1.jar lib/antlr-2.7.7.jar lib/guava-17.0.jar创建者:Apache Maven 3.0.5构建Jdk:1.8.0_60

最佳答案

解决了,最初使用 maven-jar-plugin 来构建 jar。用 maven-shade-plugin 2.4.3 替换此插件后,jar 运行没有问题。可能是 6 个重叠的类导致了该问题。

关于java - 在 IDE 外部执行时出现 NoClassDefFoundError: org/docx4j/openpackaging/exceptions/Docx4JException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38180641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com