如何从程序中创建一个可执行的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岁。

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

我不知道你在这里到底做了什么,所以下面是我的玻璃球的一些猜测:

  • 您正在用java -cp file.jar server调用程序,而它必须是java -cp file.jar finalproject

    使用后一个命令。

  • 您的IDE指示JarManifest中不存在的某个主类(server),并且您正在使用java -jar file.jar。这也解释了为什么不能从Eclipse运行它。

    检查您的生成设置以指示正确的主类。

在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

相关内容

最新更新