我刚刚用eclipse创建了一个简单的程序,我想将它编译成可执行文件,但似乎无法找到如何做到这一点。 请帮忙。
答案 0 :(得分:130)
您可以通过以下方式将.jar文件转换为.exe:
1- JSmooth .exe包装器:
JSmooth是一个Java可执行包装器。它为您的Java应用程序创建本机Windows启动程序(标准.exe)。它使java部署更加顺畅和用户友好,因为它能够自己找到任何已安装的Java VM。当没有可用的VM时,包装器可以自动下载并安装合适的JVM,或者只是显示消息或将用户重定向到网站。
JSmooth为你的java应用程序提供了各种包装器,每个包装器都有自己的行为:选择你的味道!
下载:http://jsmooth.sourceforge.net/
2- JarToExe 1.8
Jar2Exe是一个将jar文件转换为exe文件的工具。
以下是其网站中描述的主要功能:
下载:http://www.brothersoft.com/jartoexe-75019.html
3-执行者 将Java应用程序打包为jar,Executor将jar转换为Windows exe文件,与本机应用程序无法区分。只需双击exe文件即可调用Java Runtime Environment并启动应用程序。
下载:http://mpowers.net/executor/
编辑:以上链接已损坏,但这是来自Internet Archive的页面(有工作下载)。 http://web.archive.org/web/20090316092154/http://mpowers.net/executor/
4-高级安装程序
Advanced Installer允许您在几分钟内创建Windows MSI安装。这也有Windows Vista支持,也有助于用其他语言创建MSI包
下载:http://www.advancedinstaller.com/
让我知道您用于将JAR转换为EXE的其他工具。
答案 1 :(得分:31)
我会在你的情况下使用GCJ(GNU Compiler for Java)。这是一个用于Java的AOT(提前)编译器,就像GCC用于C一样。它不是解释代码,也不是生成Java VM稍后运行的中间Java代码,而是生成机器代码。
GCJ几乎可以通过其各自的包管理器(如果可用)在任何Linux系统上使用。安装后,应将GCJ编译器添加到路径中,以便可以通过终端调用它。如果您使用的是Windows,则可以通过Cygwin或MinGW下载并安装GCJ。
但是,我强烈建议您重写另一种要编译的语言的源代码,例如C ++。 Java意味着是一种可移植的解释语言。将其编译为机器代码完全违背了为其开发的语言。答案 2 :(得分:18)
我使用launch4j
ANT命令:
<target name="jar" depends="compile, buildDLLs, copy">
<jar basedir="${java.bin.dir}" destfile="${build.dir}/Project.jar" manifest="META-INF/MANIFEST.MF" />
</target>
<target name="exe" depends="jar">
<exec executable="cmd" dir="${launch4j.home}">
<arg line="/c launch4jc.exe ${basedir}/${launch4j.dir}/L4J_ProjectConfig.xml" />
</exec>
</target>
答案 3 :(得分:3)
我通常使用bat脚本。这是我通常使用的:
@echo off
set d=%~dp0
java -Xmx400m -cp "%d%myapp.jar;%d%libs/mylib.jar" my.main.Class %*
%~dp0提取.bat所在的目录。这允许蝙蝠找到罐子的位置,而不需要任何特殊的环境变量,也不需要设置PATH变量。
编辑:在类路径中添加了引号。否则,正如乔伊所说,“空间可能会发生有趣的事情”
答案 4 :(得分:2)
我们发现Jsmooth在Linux下运行良好且易于使用ant编写脚本。您可能希望使用one-jar(也可以使用Linux下的ant脚本轻松编写脚本)来首先在单个jar中收集多文件应用程序。
我们主要需要轻松部署EXE并结合“嘿,你需要Java版本X,去这里下载”设施。
(但您最需要的是标准Java中的“Runnable jar”/“Executable jar”工具。)
答案 5 :(得分:1)
你可以做的是创建一个.bat来执行创建的.jar文件,检查是否存在JRE。
来自Mitch实用链接(source)
java -classpath myprogram.jar de.vogella.eclipse.ide.first.MyFirstClass
这可以用于您的批次...
答案 6 :(得分:0)
有少数几个程序可以做到这一点...想到TowerJ(我会让你谷歌),但它需要花费很多钱。
我找到的这个主题最有用的参考是:http://mindprod.com/jgloss/nativecompiler.html
它提到了一些其他产品,以及达到同样目的的替代品。