3

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

java -jar 应用程序.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。它包含一个公共静态 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 错误是什么意思?

谢谢

4

5 回答 5

5

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

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

于 2013-01-16T11:32:46.537 回答
2

你可以做的两件事是

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

  2. 在您的 MANIFEST.MF 中添加 Classpath 选项,如下所示
    Manifest-Version: 1.0
    Main-Class: UI.MainWindow Class-Path: < PATH to the jfreechart-1.xxjar >

于 2013-01-16T10:29:56.857 回答
0

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

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

于 2013-01-16T09:57:24.123 回答
0

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

lib path will be
$JDK_HOME\jre\lib\ext
$JDK_HOME is your jdk installation root path
于 2013-01-16T10:15:23.367 回答
0

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

于 2014-07-07T17:56:19.330 回答