所以我们再来一次。我的头在我的电脑上敲了几个小时,我无法弄清楚该做什么。在我的本地PC上,我运行来自 Intellij Idea 的java代码。有用。现在我必须创建jar
文件才能在某些远程服务器上使用它。我在项目设置中添加了我的程序所需的所有库,jar(在Artifacts部分添加了库)。但它无法在远程服务器上运行。导入我的程序的需求是什么:
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$1.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的问题是什么?我错过了什么?
答案 0 :(得分:1)
org.docx4j.openpackaging.exceptions.Docx4JException位于docx4j.jar文件中,因此请确保(以及所有docx4j的依赖项)位于类路径中。
答案 1 :(得分:1)
当原始的docx4j jar没有被类加载器加载时,我遇到了类似的问题。
我试过这些:
出于某种原因,午夜指挥官无法从第一次尝试打开它们(通过按下输入)并报告“不一致的extfs存档”。这个问题通过jar娱乐解决了
# 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,我刚检查了我使用的jar所属的JDK。
OpenJDK 64-Bit 1.7.0_79,Linux Mint 17。