【问题标题】:Jar file created with Eclipse: Could not find the main class: UI.MainWindow. Program will exit使用 Eclipse 创建的 Jar 文件:找不到主类:UI.MainWindow。程序将会退出
【发布时间】:2012-12-30 14:32:02
【问题描述】:

我有一个用 Eclipse 开发的 Java 应用程序。我试图将它导出为 .jar 文件,以独立运行它,但如果我尝试使用命令运行它

java -jar application.jar

我收到此错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/jfree/data/xy/XYDataset
 Caused by: java.lang.ClassNotFoundException: org.jfree.data.xy.XYDataset
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccesController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$%AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)

找不到主类:UI.MainWindow。程序将退出

目前,主类是 MainWindow.class。它包含一个 public static void main(String[] args) 方法。 我检查了 manifest.mf 文件,它似乎是正确的:

  Manifest-Version: 1.0
  Main-Class: UI.MainWindow

我在 64 位 Windows 2008 系统上使用 Eclipse IDE for Java Developers 版本:Helios Release

我能做什么? 我怎么能解决这个问题? org/jfree/data/xy/XYDataset 错误是什么意思?

谢谢

【问题讨论】:

  • JFree 图表不在您的类路径中。

标签: java eclipse jar main classnotfoundexception


【解决方案1】:

在创建 Google Web Toolkit 示例 Web 应用程序时,我得到了类似的结果。这是错误的,因为 Java 编译器设置为 1.6 并且 GWT v2.6 需要 jdk 1.7 + 。我切换了jdk和版本。 GWT 能够编译。

【讨论】:

    【解决方案2】:

    当您的类路径中未包含一个或多个所需的依赖 jar 文件时,通常会发生这种情况,并且从您包含的MANIFEST sn-p 来看,这似乎是您的问题。

    另一方面,您可能想要使用 Export Runnable Jar 功能,这可以保证您导出的 jar 将正常工作,因为您的 Runtime Configuration 用作导出此 jar 的模板是正确的。

    【讨论】:

    • 谢谢:我不知道 Eclipse 上的“导出为可运行 JAR 文件”。我已经尝试过了,修复了一些配置细节,一切正常!从意大利到约旦,非常感谢! ^_^
    • 超棒的欢迎从约旦到意大利,别提了@DavideChicco.it ;) 在我看来 Eclipse 是一个很棒的 IDE(我也喜欢 netBeans 的一些功能,例如分析功能)。所以,我鼓励你去探索更多!
    【解决方案3】:

    1.您可以尝试将库放入jdk类路径
    2.然后导出jar并运行

    lib path will be
    $JDK_HOME\jre\lib\ext
    $JDK_HOME is your jdk installation root path
    

    【讨论】:

      【解决方案4】:

      你可以做的两件事是

      1. 在类路径中使用依赖 jar 启动 java 应用程序,如下所示。
        java -cp jfreechart-1.x.x.jar -jar application.jar

      2. 在您的 MANIFEST.MF 中添加 Classpath 选项,如下所示
        清单版本:1.0
        主类:UI.MainWindow 类路径:

      【讨论】:

      • (1) 选项出现与以前相同的错误。 (2) 选项给出了一个稍微改变的错误:现在控制台说Exception in thread "main" java.lang.NoClassDefFoundError: UI/MainWindow,其余的都是一样的。还是谢谢
      • 只要探索(打开)jar 文件中是否真的有提到的类。
      • with in application.jar 在“UI”文件夹下应该有 MainWindow.class 文件。
      【解决方案5】:

      这意味着在你的代码 main() 方法中 - org/jfree/data/xy/XYDataset 没有找到

      可能的原因是您的类路径中不存在 org.jfree 库 jar

      【讨论】:

      • 我现在会检查这个库,但无论如何我的主类不在 jfree 包中,它在我的 MainWindow 类中......
      • 是的,你的主类正在尝试访问一个类 XYDataset,它是 JFree 图表库的一部分,它无法找到它,因为它在类路径中不可用
      • 我重复了导出操作,这次添加了 \libraries\ 文件夹。但问题仍然存在...... :-(
      • 在运行 examplethis 的可执行 jar 文件时,寻找在 classpath 中包含 .jar 文件的方法
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-13
      • 2011-11-28
      • 2011-03-31
      相关资源
      最近更新 更多