2

我是 Java 新手,正在学习如何将应用程序导出到 .jar 文件。我在 Eclipse 中创建了一个简单的 Java 应用程序,其中包含一些基于Eclipse 和 Java for Total Beginners的教程的类。

当我通过 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 测试无济于事。

4

3 回答 3

1

当您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

于 2012-05-14T17:40:23.210 回答
1

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

jar cmf MANIFEST.MF myLibrary.jar *

然后,如果成功创建了 jar,您可以通过以下方式运行它:

java -jar myLibrary.jar

MANIFEST.MF 文件至少应包含:

Main-Class: myLibrary

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

于 2012-05-14T17:48:32.523 回答
0

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

于 2012-05-15T11:46:24.417 回答