我已经完成了使用POI 4.0.1库的Java项目。我正在使用Mac,Eclipse和Java 8更新201。我没有使用Maven或类似产品。我已经阅读了过去22篇有关该论点的文章,但找不到解决方案。当我使用Eclipse测试程序(由主类由10个类组成)时,没有问题。所有的工作。但是,当我尝试从命令行启动应用程序时,出现以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/Workbook
at Applicazione.main(Applicazione.java:17)
Caused by: java.lang.ClassNotFoundException: org.apache.poi.ss.usermodel.Workbook
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more
我已经在Eclipse中从POI导入了所有有用的jar。特别是:
我尝试了前一个罐子的各种组合。我试图从lib文件夹添加xmlbeans-3.0.2.jar和其他文件。但是什么都没有。在Eclipse中,它可以工作,但可以从命令行号开始。 我还尝试将POI文件夹移到Java文件夹中。什么都没改变。
我还在我的项目中找到了一个名为.classpath的文件。如果有帮助,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="lib" path="/Users/path/Desktop/App/poi-4.0.1/poi-4.0.1.jar"/>
<classpathentry kind="lib" path="/Users/path/Desktop/App/poi-4.0.1/poi-ooxml-4.0.1.jar"/>
<classpathentry kind="lib" path="/Users/path/Desktop/App/poi-4.0.1/poi-examples-4.0.1.jar"/>
<classpathentry kind="lib" path="/Users/path/Desktop/App/poi-4.0.1/poi-excelant-4.0.1.jar"/>
<classpathentry kind="lib" path="/Users/path/Desktop/App/poi-4.0.1/poi-ooxml-schemas-4.0.1.jar"/>
</classpath>
谢谢
答案 0 :(得分:0)
在命令行中运行时,您需要确保使用的库位于类路径上。由于所有POI库都位于/Users/path/Desktop/App/poi-4.0.1
导演中,因此您可以使用:
java -cp "/Users/path/Desktop/App/poi-4.0.1:." Applicazione
java.lang.NoClassDefFoundError
没有魔力。您根本没有正确的类路径。