【发布时间】:2009-08-26 05:39:09
【问题描述】:
我想在 Windows 中将 java 程序作为 exe 运行。 windows框根本不安装java...
那么,有没有其他方法可以将java程序转换为exe,从而消除对JRE的依赖?
【问题讨论】:
我想在 Windows 中将 java 程序作为 exe 运行。 windows框根本不安装java...
那么,有没有其他方法可以将java程序转换为exe,从而消除对JRE的依赖?
【问题讨论】:
您可以为此目的使用 Excelsior JET 编译器。
有关这方面的更多信息,请参阅http://www.excelsiorjet.com/。
【讨论】:
您可以将 JRE 与您的应用程序一起提供,并将该 JRE 用于您的应用程序。效果是一样的:应用程序将通过可执行文件(需要包装器)或脚本(批处理)文件启动,并且目标机器不需要安装 java 运行时。
Java 不必'已安装',它只需要'存在'。
【讨论】:
要运行应用程序,您将需要运行时。事实上,当您启动应用程序时发生的第一件事就是调用操作系统以启动 JRE。你不能没有 JRE。
[如果需要,您当然可以将 JRE 嵌入到您的应用程序中]。
【讨论】:
我使用 JSmooth 来展示我的应用程序。它还允许在其中嵌入 JRE。我只是使用了“确保至少有 Java X 可用”。
GPL,可以作为蚂蚁任务运行。
【讨论】:
鉴于您在 Windows 中请求可执行文件 (exe),还有另一种方法:
使用 IKVM.NET - Bytecode Compiler 将 Java 字节码转换为 .NET dll 和 exe。
获取最新版本的 IKVM.NET here。
使用这个命令
ikvmc -target:exe -out:foo.exe yourJarFile.jar
创建您的 .NET 可执行文件。
在此之后,您可以将您的 exe 与强制性 IKVM dll 一起使用,或者如果您更喜欢一个 exe 文件,您可以使用 ILMerge 以获得单个可执行文件:
ILMerge.exe /target:winexe /targetplatform:"v4,C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1" /out:C:\foo\bar.exe foo.exe <IKVM dll's>.dll
【讨论】:
如果您使用的是 JDK 9 及更高版本,则可以使用jlink。它将包括所有必要的模块、头文件、安全策略文件等,并构建一个最小的运行时映像。此图像可以直接运送给客户。你可以指定你自己的启动器,什么不是。
jlink描述:
您可以使用
jlink工具将一组模块及其依赖项组装和优化为自定义运行时映像。
在 oracle 文档中了解更多信息:Java Platform, Standard Edition Tools Reference。
【讨论】:
您尝试过 install4j 吗?这个概念有多种版本,有些是免费的。基本上,此应用程序会将您的应用程序编译为可执行安装程序,特定于您选择的操作系统。
【讨论】:
执行此任务的最简单方法是使用launch4j 作为Windows exe 包装器,然后使用inno setup 创建安装程序。当您为您的应用程序创建安装程序时,将文件夹添加到other application files 下。确保jre 在文件夹内。
工作完成!!!
【讨论】: