如何将我的Java程序转换为.exe文件?

如果我有一个Java源文件(* .java)或一个类文件(* .class),我怎样才能将它转换成.exe文件?

我也需要我的程序安装程序。

有没有一个开源的程序可以做到这一点?

一些选项:

可执行的Jar文件

另请参阅将应用程序分发为可执行JAR文件和Oracle文档 ,了解如何创build可在Windows上双击执行的jar文件。

JSmooth

(编辑:最后发布是在2007年)

JSmooth是一个Java可执行包装器。 它为您的Java应用程序创build本机Windows启动程序(标准.exe)。 它使得Java部署更加stream畅和用户友好,因为它能够自己find任何已安装的Java VM。

JexePack

(编辑:共享软件:最后更新于08/29/2013版本8.4)

JexePack是一个命令行工具(非常适用于自动化脚本),允许您将Java应用程序(类文件),可选的资源(如GIF / JPG / TXT /等)打包到一个压缩的32位Windows EXE ,它使用Sun的Java运行时环境运行。 支持控制台和窗口应用程序。

LaunchAnywhere

(编辑:商业与免费试用,最后的版本是从2012年)

LAX可执行文件是用于在任何LaunchAnywhere兼容平台上启动Java应用程序的可执行文件。 目前,InstallAnywhere在Windows 95/98 / NT / 2000 / Me,Solaris,Linux和Mac OS X上创buildLaunchAnywheres。LaunchAnywhere使最终用户可以双击图标(Windows或Mac OS X)或键入单个命令(UNIX)启动Java应用程序。

另请参阅参考转换Java到EXE:为什么,何时,何时不是和如何

Launch4j

Launch4j是一个跨平台的工具,用于将轻量级Windows本机可执行文件中分发的Java应用程序打包为jar。 可执行文件可以configuration为search特定的JRE版本或使用捆绑版本,并且可以设置运行时选项,如初始/最大堆大小。 通过应用程序图标,JRE初始化初始屏幕,自定义进程名称和Java下载页面,包装程序还可以提供更好的用户体验,以防无法find适当的JRE。

GCJ:用于Java的GNU编译器可以将Java源代码编译为本地机器代码,包括Windows可执行文件。

虽然在Java中并不支持Java中的所有东西,特别是GUI组件(请参阅哪些Java API受支持? FAQ中 的支持问题有多完整 )。 我没有使用GCJ,但是从控制台应用程序进行的有限testing中,似乎没有问题。

使用GCJ创build一个独立的可执行文件的一个缺点是生成的EXE的大小可能相当大。 有一次,我在GCJ中编译了一个简单的控制台应用程序,结果是一个大约1 MB的可执行文件。 (可能有一些我不知道的方法,另一种方法是执行压缩程序。)

就开源安装程序而言, Nullsoft脚本安装系统是一个可编写脚本的安装程序。 如果您很好奇,那么有用户提供的示例来说明如何检测JRE的存在,并在未安装所需的JRE的情况下自动安装它。 (只是为了让你知道,我以前没有使用NSIS。)

有关使用NSIS安装Java应用程序的更多信息,请查看我对 “ 分发Java应用程序的最佳方式是什么? ”的回答。

你可以像JSmooth,JWrapper和其他实用程序一样尝试许多java包装,但是你也可以用如下代码创build一个.bat:
start javaw -jar JarFile.jar
并使用任何.bat到.exe转换器将蝙蝠转换为exe文件。

最新的Java Web Start已得到增强,以允许良好的离线操作以及“本地安装”。 这是值得一看的。

我们使用Install4J为Windows或Unix环境构build安装程序。

它很容易定制,直到您想要编写脚本来执行不能用标准对话完成的特殊操作。 但即使我们正在设置Windows服务,我们只使用标准组件。

  • 安装程序+启动器
  • 窗口或unix
  • 用Java编写脚本
  • ant任务
  • 许多可定制的标准面板和操作
  • 可选地包括或下载JRE
  • 也可以启动windows服务
  • 多种语言

我认为Launch4J来自同一家公司(只是发射器 – 没有安装程序)。

PS:可惜我没有得到这个代言的报酬。 我只是喜欢那个工具。

恕我直言JSmooth似乎做了一个不错的工作。

如果您需要将整个应用程序转换为本地代码(即EXE plus DLL),则有ExcelsiorJET 。 我发现它运行良好,并提供了捆绑JRE的替代scheme。

或者,您可以使用一些java-to-c转换程序(例如JCGO )并将生成的C文件编译为目标平台的本机二进制文件(.exe)。

我会说launch4j是转换Java源代码(.java)为.exe文件的最佳工具你甚至可以捆绑一个JRE与它分发和EXE甚至可以被图标化。 尽pipe应用程序的大小增加了,但是即使用户没有安装jre,也可以确保应用程序能够完美工作。 它也确保您能够提供您的应用程序所需的特定jre,而无需用户单独安装。 但不幸的是,Java失去了重要性。 它的多平台支持完全被忽略,最终的应用程序只支持Windows。 但是,这不是什么大不了的事情,如果你只迎合Windows用户。

你可以使用Janel 。 这最后一个作为应用程序启动器或服务启动器(可从4.x)。

我可以原谅反对将Java程序转换为.exe应用程序,我有我的理由。 最主要的是一个Java程序可以从许多IDE编译成一个jar文件。 当程序是.jar格式时,它可以在多平台上运行,而不是运行在只有非常有限的环境中的.exe。 我认为Java程序应该不会被转换为Exe,除非它是非常必要的。 可以随时编写运行Java程序的.bat文件,同时它也是一个jar文件。

如果真的有必要把它转换为exe,Jar2Exe转换器默默地这样做,也可以附加与主应用程序一起编译的库。

您可以使用jar2exe将jar转换为exe。 但是,您需要购买该软件。 如果你需要一个开源软件,我会build议JSmooth 。