Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.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
在未安装JRE的情况下,在Windows中将java程序作为exe运行_Java_Windows - Fatal编程技术网

在未安装JRE的情况下,在Windows中将java程序作为exe运行

在未安装JRE的情况下,在Windows中将java程序作为exe运行,java,windows,Java,Windows,我想在Windows中以exe的形式运行java程序。windows box根本不安装java 那么,是否有其他方法可以将java程序转换为exe,从而消除对JRE的依赖?要运行应用程序,您需要运行时。事实上,启动应用程序时发生的第一件事就是调用OS启动JRE。你不能没有JRE [如果您愿意,当然可以将JRE嵌入您的应用程序本身]。您可以使用Excelsior JET编译器实现此目的 有关这方面的更多信息,请参阅。可以从Java源文件创建本机代码。关于如何在Windows中构建它的教程。您可以将

我想在Windows中以exe的形式运行java程序。windows box根本不安装java


那么,是否有其他方法可以将java程序转换为exe,从而消除对JRE的依赖?

要运行应用程序,您需要运行时。事实上,启动应用程序时发生的第一件事就是调用OS启动JRE。你不能没有JRE


[如果您愿意,当然可以将JRE嵌入您的应用程序本身]。

您可以使用Excelsior JET编译器实现此目的


有关这方面的更多信息,请参阅。

可以从Java源文件创建本机代码。关于如何在Windows中构建它的教程。

您可以将JRE与应用程序一起提供,并在应用程序中使用该JRE。效果是一样的:应用程序将通过可执行文件(需要包装器)或脚本(批处理)文件启动,目标机器不需要安装java运行时


Java不必“安装”,它只需“存在”即可。

我已经使用JSmooth退出了我的应用程序。它还允许在内部嵌入JRE。我只是使用了“确保至少有JavaX可用”


GPL可以作为ant任务运行。

您尝试过install4j吗?这个概念有多种版本,有些是免费的。基本上,此应用程序会将您的应用程序编译为可执行安装程序,特定于您选择的操作系统。

鉴于您在Windows中请求可执行文件(exe),还有另一种方法:

用于将Java字节码转换为.NET dll和exe

获取IKVM.NET的最新版本

使用此命令

 ikvmc -target:exe -out:foo.exe yourJarFile.jar
创建.NET可执行文件

在此之后,您可以将exe与必需的IKVM dll一起使用,或者如果您更喜欢一个exe文件,则可以使用以获取单个可执行文件:

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

ILMerge.exe/target:winexe/targetplatform:“v4,C:\Program Files(x86)\Reference Assembly\Microsoft\Framework\.NETFramework\v4.6.1”/out:C:\foo\bar.exe foo.exe如果您使用的是JDK 9及以上版本,则可以使用
jlink
。它将包括所有必要的模块、头文件、安全策略文件等,并构建一个最小的运行时映像。此图像可以直接发送给客户。您可以指定自己的启动器,也可以不指定

jlink
说明:

您可以使用
jlink
工具将一组模块及其依赖项组合并优化为自定义运行时映像


阅读oracle文档的更多信息:。

完成此任务的最简单方法是对windows exe包装使用
launch4j
,然后使用
inno setup
创建安装程序。为应用程序创建安装程序时,请在
其他应用程序文件
下添加文件夹。确保
jre
位于文件夹内


工作完成

据我所知,你没有错,但我很好奇;为什么会这样?有几个不同的实用程序(py2exe就是其中之一)将Python解释器与安装程序打包在一起。虚拟机的关键在于您希望从底层操作系统抽象应用程序。另一个例子是垃圾收集。如果没有人忽略应用程序并在对象超出范围时负责释放内存,垃圾收集是不可能工作的。这是由JRE完成的。@Sesh其他答案表明这是错误的。我们需要一个JRE的替代品(这正是其他答案所涉及的)。JRE没有什么神奇之处;你可以有一个替代引擎来做垃圾收集之类的事情。你能告诉我,GCJ在处理Java 1.5和1.6特性方面有多好吗?我知道,它只在JDK 1.4上工作,这太糟糕了。GCJ已经死了很多年了,包括发布这篇文章的那一年。这对我来说很好。除了IKVM在Java的更高版本上似乎有问题。我不得不改变我的目标java版本。此外,它似乎只能生成.NET版本3.5的二进制文件(最好是.NET 2)。你能吗?比如法律上?根据我的经验,Oracle不允许Linux发行版包含JRE。我想应用程序也有类似的分发问题。