如何使用netbeans创建可执行的.jar文件

时间:2009-12-22 13:33:12

标签: java netbeans build jar

我想制作“双击”cli应用程序,但仍然没有得到如何。 我知道我应该以某种方式编辑清单,但这就是全部。我用谷歌搜索了。但没有成功。 谢谢你的任何提示。 以下是构建,运行和清单的输出:

compile:
Created dir: /home/nick/NetBeansProjects/SemestralWork/dist
Building jar: /home/nick/NetBeansProjects/SemestralWork/dist/SemestralWork.jar
Not copying the libraries.
To run this application from the command line without Ant, try:
java -jar "/home/nick/NetBeansProjects/SemestralWork/dist/SemestralWork.jar"
jar:
BUILD SUCCESSFUL (total time: 1 second)


java -jar /home/nick/NetBeansProjects/SemestralWork/dist/SemestralWork.jar

Exception in thread "main" java.lang.NoClassDefFoundError: semestralwork/Main
Caused by: java.lang.ClassNotFoundException: semestralwork.Main
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:319)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:264)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:332)
Could not find the main class: semestralwork.Main. Program will exit.

MY MANIFEST created with build:

Manifest-Version: 1.0

Ant-Version: Apache Ant 1.7.1

Created-By: 14.0-b08 (Sun Microsystems Inc.)

Main-Class: semestralwork.Main

Class-Path: 

X-COMMENT: Main-Class will be added automatically by build

6 个答案:

答案 0 :(得分:6)

这两行告诉你所有你需要知道的事情:

Exception in thread "main" java.lang.NoClassDefFoundError: semestralwork/Main
Caused by: java.lang.ClassNotFoundException: semestralwork.Main

清单输出会删除另一条线索:

Main-Class: semestralwork.Main

这意味着JAR文件正在寻找名为semestralwork的包和一个名为Main的类。此时它失败了,因为找不到semestralwork包或Main类。

正如您在问题中指出的那样,问题确实存在于清单文件中。如果您愿意,可以直接在JAR文件中编辑它,但更好的想法是从Netbeans做到这一点:

  • 点击`文件 - >项目属性(semestralwork)'
  • 在打开的对话框中,在左侧的树上选择Run
  • 然后,在右侧的标有Main class:的字段下,输入从命令行运行时要执行的类的完全限定类名

在你的情况下,正如我从你对@Aaron的答案的评论中看到的那样,如果你的主类在一个名为encryption.java的文件中,并且它在默认包中(没有包),只需输入{{1 }}

完成此操作后,请执行clean并构建,然后再次尝试从命令行运行它。

HTH

答案 1 :(得分:4)

由于我遇到了同样的问题,我可以稍微澄清一下解决方案。

您必须在方法之外创建主Java类(例如-default_package文件夹),然后调用您的方法(文件夹),例如该主类中的import your_folder.connected_class;

希望我可以帮助有同样问题的人。

答案 2 :(得分:1)

从没有 netbeans的.jar 创建.exe更容易。 以下是我的建议: 1.使用特殊应用程序(例如:JSmooth,JEXECreator等) 2.创建一个启动JVM的C ++程序(请参阅此tutorial

答案 3 :(得分:0)

默认的类搜索路径可能是问题。您应该尝试将目录更改为jar所在的位置,并使用java -jar Semestral.jar启动。你也可能错误地命名了主类。还请包括您的包装结构。

答案 4 :(得分:0)

使用ZIP工具打开JAR文件(如果您使用的是Linux或less ...,请尝试jar tvf ...)。确保其中的目录semestralwork包含文件Main.class

答案 5 :(得分:0)

很容易。下载netbeans的副本。在netbeans中创建一个新项目。转到Projects Explorer中的主类。这应该是文件夹“YourProject”作为类YOURPROJECT.JAVA。这是您想要开始的yourproject.java文件。只需将代码写入public static void main区域即可。您可以使用顶部工具栏中的绿色播放按钮运行该程序。