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

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

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 

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

 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的文件中,并且它位于默认包(无包)中,则只需输入encryption

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

HTH

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

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

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

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

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

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

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