ClassNotFoundException:org.docx4j.openpackaging.exceptions.Docx4JException
ClassNotFoundException: org.docx4j.openpackaging.exceptions.Docx4JException
所以我们再来一次。我的脑袋在我的电脑上敲了几个小时,我不知道该怎么做。在我的本地 PC 上,我 运行 来自 Intellij Idea 的 java 代码。有用。现在我必须创建 jar
文件以使其能够在某些远程服务器上使用。我在项目设置中添加了我的程序需要的所有库、jar(在 Artifacts 部分添加了库)。但它在远程服务器上 运行ning 不起作用。我的程序需要导入什么:
import org.docx4j.dml.CTBlip;
import org.docx4j.jaxb.XPathBinderAssociationIsPartialException;
import org.docx4j.openpackaging.exceptions.Docx4JException;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
import org.docx4j.openpackaging.parts.PartName;
import org.docx4j.openpackaging.parts.relationships.RelationshipsPart;
import org.docx4j.relationships.Relationship;
import javax.xml.bind.JAXBException;
import java.io.File;
import java.util.List;
错误:
Exception in thread "main" java.lang.NoClassDefFoundError: org/docx4j/openpackaging/exceptions/Docx4JException
Caused by: java.lang.ClassNotFoundException: org.docx4j.openpackaging.exceptions.Docx4JException
at java.net.URLClassLoader.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
Could not find the main class: Main. Program will exit.
那么是创建 jar 的问题吗?我错过了什么?
org.docx4j.openpackaging.exceptions.Docx4JException 在 docx4j.jar 文件中,因此请确保它(以及所有 docx4j 的依赖项)在您的类路径中。
当类加载器未加载原始 docx4j jar 时,我遇到了类似的问题。
我试过这些:
- docx4j-3.1.0.jar
- docx4j-3.2.1.jar
出于某种原因,Midnight Commander 无法从第一次尝试中打开它们(通过按回车键)并报告 "Inconsistent extfs archive"。问题已通过 jar recreation
解决
# run in a directory containing just single original docx4j jar file
unzip docx4j-3.2.1.jar
rm -r docx4j-3.2.1.jar
jar cf docx4j-3.2.1.jar *
现在新的 jar 在 MC 中打开没有问题(至少在我的情况下)并且它的 类 被加载并且 java.lang.NoClassDefFoundError
不再被抛出。
更新
JIC,我刚刚检查了JDK我用的罐子属于哪个。
它是开放的JDK 64 位 1.7。0_79,Linux Mint 17。
所以我们再来一次。我的脑袋在我的电脑上敲了几个小时,我不知道该怎么做。在我的本地 PC 上,我 运行 来自 Intellij Idea 的 java 代码。有用。现在我必须创建 jar
文件以使其能够在某些远程服务器上使用。我在项目设置中添加了我的程序需要的所有库、jar(在 Artifacts 部分添加了库)。但它在远程服务器上 运行ning 不起作用。我的程序需要导入什么:
import org.docx4j.dml.CTBlip;
import org.docx4j.jaxb.XPathBinderAssociationIsPartialException;
import org.docx4j.openpackaging.exceptions.Docx4JException;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
import org.docx4j.openpackaging.parts.PartName;
import org.docx4j.openpackaging.parts.relationships.RelationshipsPart;
import org.docx4j.relationships.Relationship;
import javax.xml.bind.JAXBException;
import java.io.File;
import java.util.List;
错误:
Exception in thread "main" java.lang.NoClassDefFoundError: org/docx4j/openpackaging/exceptions/Docx4JException
Caused by: java.lang.ClassNotFoundException: org.docx4j.openpackaging.exceptions.Docx4JException
at java.net.URLClassLoader.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
Could not find the main class: Main. Program will exit.
那么是创建 jar 的问题吗?我错过了什么?
org.docx4j.openpackaging.exceptions.Docx4JException 在 docx4j.jar 文件中,因此请确保它(以及所有 docx4j 的依赖项)在您的类路径中。
当类加载器未加载原始 docx4j jar 时,我遇到了类似的问题。
我试过这些:
- docx4j-3.1.0.jar
- docx4j-3.2.1.jar
出于某种原因,Midnight Commander 无法从第一次尝试中打开它们(通过按回车键)并报告 "Inconsistent extfs archive"。问题已通过 jar recreation
解决# run in a directory containing just single original docx4j jar file
unzip docx4j-3.2.1.jar
rm -r docx4j-3.2.1.jar
jar cf docx4j-3.2.1.jar *
现在新的 jar 在 MC 中打开没有问题(至少在我的情况下)并且它的 类 被加载并且 java.lang.NoClassDefFoundError
不再被抛出。
更新
JIC,我刚刚检查了JDK我用的罐子属于哪个。
它是开放的JDK 64 位 1.7。0_79,Linux Mint 17。