Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将Java程序转换为.exe文件?_Java_Installation_Exe - Fatal编程技术网

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

如何将Java程序转换为.exe文件?,java,installation,exe,Java,Installation,Exe,如果我有Java源文件(*.Java)或类文件(*.class),如何将其转换为.exe文件 我还需要一个程序的安装程序。IMHO似乎做得很好 更新:GCJ已死亡。它来自2016年的GCC项目。甚至在那之前,它实际上已经被废弃了七年,而且在任何情况下,它都可以作为一种可行的替代Java实现 去找另一个Java AOT编译器 可以将Java源代码编译为本机代码,包括Windows可执行文件 尽管GCJ并不支持Java中的所有内容,尤其是GUI组件(请参阅 委员会的问题)。我没有太多使用GCJ,但从

如果我有Java源文件(*.Java)或类文件(*.class),如何将其转换为.exe文件

我还需要一个程序的安装程序。

IMHO似乎做得很好

更新:GCJ已死亡。它来自2016年的GCC项目。甚至在那之前,它实际上已经被废弃了七年,而且在任何情况下,它都可以作为一种可行的替代Java实现

去找另一个Java AOT编译器

可以将Java源代码编译为本机代码,包括Windows可执行文件

尽管GCJ并不支持Java中的所有内容,尤其是GUI组件(请参阅 委员会的问题)。我没有太多使用GCJ,但从我对控制台应用程序所做的有限测试来看,它似乎很好

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

就开源安装程序而言,是一个可编写脚本的安装程序。如果您感到好奇,下面将介绍如何检测JRE的存在,并在未安装所需的JRE时自动安装它。(只是想让你知道,我以前从未使用过NSIS。)

有关使用NSIS安装Java应用程序的详细信息,请查看问题“”

Java Packager工具编译、打包和准备Java和JavaFX应用程序以供分发。javapackager命令是命令行版本

–Oracle的文档

JDK附带了
javapackager
实用程序。它可以生成带有
-native exe
标志的.exe文件,以及其他许多功能

WinRun4j是windows的java启动器。它是javaw.exe的替代品,具有以下优点:

  • 使用INI文件指定类路径、主类、vm参数和程序参数
  • 任务管理器中显示的自定义可执行文件名称
  • 额外的JVM参数可以更灵活地使用内存
  • 自定义图标的内置图标替换程序
  • [更多要点如下]
–WinRun4J的网页

WinRun4J是一个开源实用程序。它有很多特点

打包您的JAR、资产和JVM,以便在Windows、Linux和Mac OS X上分发,并添加一个本机可执行文件,使其看起来像一个本机应用程序。Packr最适合GUI应用程序

–packr自述文件

packr是另一个开源工具

JSmooth是一个Java可执行包装器。它为java应用程序创建本机Windows启动器(standard.exe)。它使java部署更加平滑和用户友好,因为它能够自己找到任何已安装的java VM

–JSmooth的网站

JSmooth是开源的,有很多特性,但它已经很老了。上一次发布是在2007年

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

–JexePack的网站

JexePack是试用软件。生产使用需要付款,使用此工具创建的exe文件将显示“提醒”,无需付款。此外,上一次发布是在2013年

InstallAnywhere使开发人员可以轻松地为任何平台创建专业安装软件。使用InstallAnywhere,您将快速适应行业变化,更快地进入市场,并提供引人入胜的客户体验。并在发布之前了解项目OSS组件的漏洞

–InstallAnywhere的网站

InstallAnywhere是一个为基于Java的程序生成安装程序的商业/企业软件包。它可能能够创建.exe文件

可执行JAR文件 作为.exe文件的替代方法,您可以创建一个JAR文件,双击时自动运行,方法是


更多信息 Excelsior的文章是关于这个主题的一个极好的信息来源

另见附文“”

Launch4j是一个跨平台工具,用于包装轻量级Windows本机可执行文件中作为JAR分发的Java应用程序。可执行文件可以配置为搜索特定JRE版本或使用捆绑版本,还可以设置运行时选项,如初始/最大堆大小。包装器还通过应用程序图标、本机预JRE初始屏幕、自定义进程名称和Java下载页面(如果找不到合适的JRE)提供更好的用户体验

–启动4J的网站

我们正在使用为windows或unix环境构建安装程序

它可以很容易地定制,直到您想要为标准对话无法完成的特殊操作编写脚本为止。但即使我们用它来设置windows服务,我们也只使用标准组件

  • 安装程序+启动器
  • windows或unix
  • 可在Java中编写脚本
  • 蚂蚁任务
  • 大量可定制的标准面板和动作
  • 可选地包括或下载JRE
  • 也可以启动windows服务
  • 多种语言
我认为Launch4J来自同一家公司(只是启动器-没有安装程序)

PS:遗憾的是,我没有得到这个代言的报酬。我很喜欢这个工具。

最新的工具已经得到了增强,允许良好的脱机操作以及“本地安装”。这是值得研究的

编辑2018:Java Web Start不再与最新的JDK捆绑在一起。Oracle正在推动“部署您的应用程序loca”
package exe;
public class Main {
    public static void main(String[] args) {
        for (int i = 0; i < args.length; i++) {
            System.out.println("args["+i+"]="+args[i]);
        }
    }
}
mkdir jpackage.input\jars tmp
javac -d tmp src\exe\Main.java
pushd tmp && jar cvf ..\jpackage.input\jars\myapp.jar . && popd
java -cp jpackage.input\jars\myapp.jar exe.Main X Y Z
set jlink.modules=java.base
jlink --add-modules %jlink.modules% --strip-debug --no-man-pages --no-header-files --compress=1 --output jpackage.jre
set appver=%date:~6,2%.%date:~3,2%.%date:~0,2%%time:~0,2%
jpackage --win-console --input jpackage.input --runtime-image jpackage.jre --app-version %appver% --type exe --name "MyApp" --dest jpackage.dest --java-options "-XshowSettings:properties" --main-jar jars\myapp.jar --main-class exe.Main
jpackage.dest\MyApp-%appver%.exe
"C:\Program Files\MyApp\MyApp.exe" ONE 2 THREE

... Prints system properties ...

args[0]=ONE
args[1]=2
args[2]=THREE