【问题标题】:java.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/Workbook problemjava.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/Workbook 问题
【发布时间】:2019-06-14 02:25:33
【问题描述】:

我已经完成了一个使用 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 中它可以工作,但从命令行没有。 我还尝试在 Java 文件夹中移动 POI 文件夹。什么都没有改变。

我还在我的项目中找到了一个名为 .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>

谢谢

【问题讨论】:

    标签: java eclipse macos


    【解决方案1】:

    在命令行中运行时,您需要确保您使用的库位于类路径中。由于所有 POI 库都在 /Users/path/Desktop/App/poi-4.0.1 目录中,您可以使用:

    java -cp "/Users/path/Desktop/App/poi-4.0.1:." Applicazione
    

    java.lang.NoClassDefFoundError 没有魔法。您根本没有正确的类路径。

    【讨论】:

    • 我刚试过。我进入我的 bin 目录(/Users/path/Desktop/App/App/bin)并复制您的行,但我得到了同样的错误。如何修改类路径?
    • 如果有用的话,我的文件夹是桌面上的 App。它包含另外 2 个文件夹:POI-4.0.1 和 App。第二个包含代码(bin文件夹和src文件夹)
    • 我试图设置类路径,但现在错误是:找不到或加载主类 Applicazione
    • 谢谢。我解决了阅读这个stackoverflow.com/questions/4869024/…的问题
    猜你喜欢
    • 2019-05-27
    • 1970-01-01
    • 2016-03-29
    • 1970-01-01
    • 1970-01-01
    • 2011-09-21
    • 2017-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多