将java程序编译为可执行文件

Mei*_*eir 112 java executable compilation

可能重复:
如何为Java程序创建.exe?

我刚刚用eclipse创建了一个简单的程序,我想将它编译成可执行文件,但似乎无法找到如何做到这一点.请帮忙.

Saj*_*ani 131

您可以通过以下方式将.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文件的工具.以下是其网站中描述的主要功能:

  • 可以生成"Console","Windows GUI","Windows Service"三种类型的exe文件.
  • 生成的exe文件可以添加程序图标和版本信息.
  • 生成的exe文件可以加密和保护java程序,程序运行时不会生成临时文件.
  • 生成的exe文件提供系统托盘图标支持.
  • 生成的exe文件提供记录系统事件日志支持.
  • 生成的Windows服务exe文件能够自行安装/卸载,并支持服务暂停/继续.
  • 新版x64版本,可以创建64位高管.(2008年5月18日)
  • 支持向导模式和命令行模式.(2008年5月18日)

下载: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
Advanced Installer允许您在几分钟内创建Windows MSI安装.这也支持Windows Vista,也有助于使用其他语言创建MSI包.
下载:http://www.advancedinstaller.com/ 让我知道您用于将JAR转换为EXE的其他工具.

  • 1.最后更新2007 3.无效链接4.无效链接 (6认同)
  • 还有Launch4J:http://launch4j.sourceforge.net/(德米特里页面上列出的众多之一) (4认同)
  • 我在这里维护了一个jar to exe转换工具链接的集合:http://www.excelsior-usa.com/articles/best-jar-to-exe-conversion-tools-free-commercial.html (3认同)
  • 让我们看看,JSmooth最后一次更新是在2007年.这是7年前.这就像人类年龄的1000年.JarToExe似乎仍然活跃.但没有试用版,售价145美元.执行人链接已经死了.高级安装程序用于制作.MSI,网站上没有提及Java,它看起来像营销网站.这是一个非常有用的答案.任何地方都没有开源软件. (2认同)

jak*_*gut 32

我会在你的情况下使用GCJ(GNU Compiler for Java).它是用于Java的AOT(提前)编译器,就像GCC用于C而不是解释代码,或生成中间Java代码以便稍后由Java VM运行,它生成机器代码.

GCJ几乎可以通过其各自的包管理器(如果可用)在任何Linux系统上使用.安装后,应将GCJ编译器添加到路径中,以便可以通过终端调用它.如果您使用的是Windows,则可以通过Cygwin或MinGW下载并安装GCJ.

但是,我强烈建议您重写另一种要编译的语言的源代码,例如C++.Java意味着是一种可移植的解释语言.将其编译为机器代码完全违背了为其开发的语言.

  • @Mark - 它们不需要单独的JVM,但libgcj库实际上是一个JVM. (3认同)

r3z*_*n1k 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>
Run Code Online (Sandbox Code Playgroud)

  • 如果您已经包含了L4J_ProjectConfig.xml的内容,那么这个答案将*更好*。 (2认同)

Ita*_*man 5

我通常为此使用 bat 脚本。这是我通常使用的:

@echo off
set d=%~dp0
java -Xmx400m -cp "%d%myapp.jar;%d%libs/mylib.jar" my.main.Class %*
Run Code Online (Sandbox Code Playgroud)

%~dp0 提取 .bat 所在的目录。这允许 bat 找到 jars 的位置,而不需要任何特殊的环境变量,也不需要设置 PATH 变量。

编辑:在类路径中添加了引号。否则,正如乔伊所说,“空间可以发生有趣的事情”

  • 你真的应该引用你的类路径。否则有趣的事情会发生在空格上。 (5认同)
  • 这不是问题的答案。 (2认同)

归档时间:

查看次数:

264443 次

最近记录:

6 年 前