如何使用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区域即可。 您可以使用顶部工具栏中的绿色播放按钮运行该程序。
- 使用Gradle的Application插件添加类路径条目
- 如何在Ant中添加与java -D等效的系统属性
- Maven构建编译错误:无法执行目标org.apache.maven.plugins:maven-compiler-plugin:3.1:在项目Maven上编译(default-compile)
- 从头开始构建Eclipse IDE – 如何指定目标操作系统?
- IVY Build,如何在项目中使用extlib目录?
- 如何在Eclipse中运行具有main()的单个Java文件,而无需创建整个Java项目?
- Maven:从构建中排除测试
- Java:gradle构建失败bootRepackage(在创建jar上)
- Maven构建仅更改文件