如何在java中创建exe文件

嗨,我想为我的Java应用程序创建一个exe文件。

我尝试了一些第三方软件JEXECreator,成功创建了exe文件,并在我的系统中正常工作,当我尝试使用另一台机器时,它无法正常工作。 我收到以下错误

* The error occurred while running the application. The exit code is 0x10000223. * Contact the vendor of the application for troubleshooting. java.lang.ClassNotFoundException: com.sample.SampleMain 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) at java.lang.ClassLoader.loadClassInternal(Unknown Source) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at com.ucware.JEXEClassLoader.run(Unknown Source) at com.ucware.JEXEClassLoader.main(Unknown Source) ************************************** 

我知道我设置的类路径有问题。

实际上我想自己创建exe文件而不使用任何第三方软件。

我在很多站点找到了步骤

创建名为Sample.mft的清单文件,其中包含以下内容

  Manifest-Version: 1.0 Main-Class: Class-path: 

在这我有一些疑惑,

  1. 如何添加Main-Class,包括完整的包名(com.sample.SampleMain)或类名(SampleMain)或扩展名(SampleMain.class)

  2. 如何添加类路径,我的项目中有4个java类和2个jar。 如何在类路径中添加所有这些,我是否需要在classpath中添加java jdk。

  3. 应该保存清单文件的位置

  4. 什么应该是清单文件扩展名(mf或mft)

  5. 在命令提示符下我应该从哪个目录创建exe文件(从我的项目文件夹或src文件夹或包含所有java类的文件夹)

  6. 在命令提示符下创建jar时应该使用什么语法

(jar cmf Sample.mf Sample.jar Sample1.class Sample2.class Sample3.class Sample4.class jar1.jar jar2.jar)像这样或(jar cvfm Sample.jar sample.mf * .class)

当我做这样的事情时,我得到一个jar而不是exe文件,当我在命令提示符下使用“java -jar sample.jar”运行jar时,我得到的是类找不到exception“。

实际上如何创建一个exe文件而不是jar文件,这意味着只需双击该exe文件,就可以在任何机器上运行我的应用程序。

任何人都可以帮我这样做吗?

提前致谢。

我使用Eclipse IDE下的Ant工具与InnoSetup和Launch4J一起创建EXE及其安装程序,它还管理类路径…

指引? 你可以参考:

http://www.eteks.com/tips/tipCreationExe.html (法文)

不能代表JEXECreator,但我可以推荐JSmooth( http://jsmooth.sourceforge.net/ )。 我已经成功地将它用于几个项目(例如这个基于SWT的Java应用程序 )。

就个人而言,我喜欢JSmooth 。 那只是包装。 这意味着它仍然是一个Java应用程序。 执行exe时,它会将jar解压缩到一个临时文件夹,然后用javaw -jar ...执行javaw -jar ...

第二个选项是gcj 。 但这绝对是一个糟糕的选择。 这不会将jar包装在exe中,但它确实将其编译为本机系统代码。 但这会大大减慢你的应用程序。 您可以在此主题上查看我的时间安排的一些结果。

我对Excelsior JET有一些积极的经验。 与gcj不同,它实际上工作并且执行时间比执行的.jar文件快。 缺点是它不是免费的。

要创建exe文件,我使用launch4j。 Launch4j将jar文件转换为exe文件,如果我想将其打包为安装程序,我使用InnoSetup。 对我来说,launch4j创建的exe在pcs上运行。

好吧,我会建议你创建一个bash文件而不是做复杂的事情,双击它就可以运行你的应用程序。但是你不能改变它的图标但是有许多免费工具可以使用你可以轻松转换bash文件到exe。