如何从我的程序创建可执行jar文件,以便每次双击或从命令行运行它?

时间:2011-06-13 22:21:19

标签: java exception jar

我正在使用Eclipse程序编译我的.jar

http://pastebin.com/AY79DbgY

它应该只是一个控制台窗口。我刚刚开始使用java,所以我不知道我做错了什么。

当我尝试运行我在Eclipse中编译的.jar时,它根本不运行,但是如果我打开cmd,并尝试通过那里运行它,它打印出来,我根本不懂:

Exception in thread "main" java.lang.NoClassDefFoundError: server
Caused by: java.lang.ClassNotFoundException: server
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.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)
Could not find the main class: server.  Program will exit.

我只想创建一个.jar,我可以从任何计算机上运行而无需使用Eclipse。它在那里的控制台运行得很好。

此外,每隔一段时间,当我在Eclipse中的控制台中终止脚本时,我会收到此错误,但是否则它似乎运行得很好:

        Exception in thread "main" java.util.NoSuchElementException: No line found
            at java.util.Scanner.nextLine(Unknown Source)
            at finalproject.main(finalproject.java:432)

所以我有点不知道我现在在做什么。

如果我的打字看起来像我年轻,那是真的,我只有15岁。

3 个答案:

答案 0 :(得分:3)

您需要添加包含在清单中运行JAR时执行的main()方法的类的名称。请查看this获取相关说明。

答案 1 :(得分:0)

我不知道你在这里做了什么,所以这里有一些来自我的玻璃球的猜测:

  • 您是通过java -cp file.jar server致电您的计划,而必须是java -cp file.jar finalproject

    使用后一个命令。

  • 您的IDE指示Jar Manifest中的一个主要类(server),它不存在,您正在使用java -jar file.jar。这也可以解释为什么你不能从Eclipse运行它。

    检查您的构建设置以指示正确的主要课程。

答案 2 :(得分:0)

在您的JAR文件中,您应该有一个名为MANIFEST.MF的文件(在文件夹META-INF下) 这描述了jar文件的各种属性。

您应该对其进行编辑并添加:

Main-Class: finalproject

我会把你的类放在一个包中,因为在默认包中使用它会引起一些类路径问题。

您可以使用winzip或winrar打开JAR文件并直接编辑MANIFEST.MF进行测试,但实际上您应该将它与您在JAR中打包的类一起放在外面,以便每次生成JAR将文件包含在其他类中。

以下是在生成JAR文件时如何包含添加到默认清单的文件。 http://download.oracle.com/javase/tutorial/deployment/jar/modman.html