java.lang.NoClassDefFoundError:org / apache / poi / ss / usermodel / Workbook问题

时间:2019-01-20 14:22:03

标签: java eclipse macos

我已经完成了使用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。特别是:

  • POI-4.0.1.jar
  • POI-ooxml.jar
  • POI-excelant.jar
  • POI-ooxml-schemas-4.0.1.jar
  • POI-scratchpad.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>

谢谢

1 个答案:

答案 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没有魔力。您根本没有正确的类路径。