【问题标题】:Why does my .jar file raise exceptions even if my program runs without exceptions in Eclipse?为什么即使我的程序在 Eclipse 中运行时没有异常,我的 .jar 文件也会引发异常?
【发布时间】:2012-05-22 05:33:24
【问题描述】:

我是 Java 新手,正在学习如何将应用程序导出为 .jar 文件。我根据Eclipse and Java for Total Beginners 的教程在 Eclipse 中制作了一个简单的 Java 应用程序,其中包含一些类。

当我通过 Run -> Run in Eclipse 运行我的应用程序时,我的应用程序无异常运行。但是,当我进入 File -> Export 并将我的应用程序导出到 .jar 文件中,然后执行

java myLibrary.jar

在我的 Mac 终端中,我从标准错误中得到这个输出。

Exception in thread "main" java.lang.NoClassDefFoundError: myLibrary/jar

Caused by: java.lang.ClassNotFoundException: myLibrary.jar
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

这是什么意思?我怎么会缺课?我尝试检查和取消选中要导出的项目。例如,我尝试包含我的 JUnit 测试但无济于事。

【问题讨论】:

  • 谢谢!我做到了,但现在我有错误Failed to load Main-Class manifest attribute from myLibrary.jar

标签: java eclipse jar executable-jar noclassdeffounderror


【解决方案1】:

在终端中转到包含所有类文件的目录。

jar cmf MANIFEST.MF myLibrary.jar *

如果jar创建成功,你可以通过以下方式运行它:

java -jar myLibrary.jar

MANIFEST.MF 文件至少应包含:

Main-Class: myLibrary

其中 myLibrary 是包含您的主要功能的类。

【讨论】:

  • 感谢运行第一个命令,然后运行 ​​jar 工作。
【解决方案2】:

当你不带参数运行java 时,它会打印:

Usage: java [-options] class [args...]
           (to execute a class)
   or  java [-options] -jar jarfile [args...]
           (to execute a jar file)

使用-jar 运行您的jar 文件。

您还需要指明要运行的类。您可以在清单中执行此操作(您将使用 Main-Class 标头)。你可以在这里阅读更多信息:http://docs.oracle.com/javase/tutorial/deployment/jar/run.html

【讨论】:

    【解决方案3】:

    在 Eclipse 中,右键单击您的项目 -> 单击导出 -> Java -> Jar 文件 -> 选择源文件夹(默认值在大多数情况下应该可以正常工作)。给出 jar 文件的位置。转到向导的最后一页,在“选择应用程序入口点的类:”中,选择包含 main.java 的 java 类文件。

    【讨论】:

      猜你喜欢
      • 2021-06-19
      • 1970-01-01
      • 2020-07-27
      • 1970-01-01
      • 2022-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多