当前位置: 首页 > 知识库问答 >
问题:

我如何在我的JAR中捆绑一个JRE,以便它可以在没有Java的系统上运行?

艾跃
2023-03-14

我尝试过Launch4j,但这种方法要求我同时提供JRE和EXE。根据我的要求,我不应该使用安装程序来发布,也不应该在客户端机器上提取/安装JRE。

如何将JRE放入JAR并加以利用?

共有1个答案

袁恩
2023-03-14

不能将JRE放入JAR文件中。(好吧,你可以...但这无济于事。)

您需要做的是构建并分发一个安装程序。创建安装程序的推荐方法是使用商业或开源的安装程序生成器。(谷歌会帮你找到一个。)

也可以将JRE嵌入到ZIP文件中,如下所述:

    null
    null

从Java9开始,有一个比在安装程序中嵌入标准JRE更好的解决方案。使用新的jlink实用工具为应用程序创建定制的JRE;请参阅https://www.baeldung.com/Jlink获取教程和Oracle Jlink手动条目。

注意,jlink解决了我们上面提到的嵌入式JRE的问题。但这显然使您有责任1以新的JLink的分发表的形式向用户提供JVM安全补丁。

1-在现实中,建议和协助客户升级嵌入式JRE,一直是应用程序供应商/供应商的责任。不幸的是,许多供应商忽略了这一点,导致客户运行带有已知Java漏洞的应用程序,而Sun/Oracle因供应商的失败而受到指责,这是不公平的。

 类似资料:
  • 在我的php脚本中,我有一个简单的username/email exists条件,但是我想把这个错误(如果存在的话)放在html的某个地方,这样我就可以设置它的样式并将它放置在我的表单上。Echo只是把它放在左上角。我该怎么做?设置变量似乎不是最佳解决方案。

  • 我已经在NetBeans中创建了一个Java项目,自动构建的分发文件(.jar)在我的Ubuntu15.04AMD64机器上运行得非常好。 我想在发布它之前确保它在windows上运行,但在windows 7 32位机器上测试后,我发现它不工作。下面是错误消息的屏幕截图。 我可以猜到一些问题--因为它谈到了一个。regex错误。我并没有在代码中真正使用regex,而是使用string.split。

  • 问题内容: 通过将文件从中复制到我的应用程序发行版中,我一直将JRE与我的应用程序捆绑在一起。这可能与Java的精神背道而驰,但是通过确保我的应用程序在经过测试的JRE版本(包括位)上运行,可以减少潜在的问题;我使用某些JNI,要求JRE是32位版本)。 它可以正常工作,但是整个发行版有些大,因此也许可以省去一些不必要的文件?实际上,包含以下建议: 组成Java SE Runtime Enviro

  • 在用户需要安装jre才能运行aps之前: 现在随着jlink和jpack的发布,可以使用捆绑的jre部署jars。 启动另一个的正确方法是什么。jar来自使用jlink/jpackage部署的程序? 将无法工作,因为最终用户不再安装java 请参阅:如何从命令行调用嵌入式jre以运行java应用程序 这是一个类似的问题,但没有解决创建。带jlink/J包的jar

  • 问题内容: 是否可以在任何操作系统(例如Windows,Linux,Mac OS X)上执行JAR文件?我想构建一个要在Linux,Windows和Mac OS X上运行的简单应用程序。JAR文件可以在安装了Java的任何操作系统上运行吗? 问题答案: Jar文件可在存在JVM的任何OS上运行。

  • 从Eclipse导出可运行的JAR文件是从另一台机器上的命令行启动Eclipse项目的最快方法。请参见此答案。 问题是,如果要从中运行的计算机上安装的JRE比Eclipse使用的JDK旧,则会出现以下错误: 我知道,在Eclipse上,我可以用较低的遵从性级别(例如,用1.6而不是1.7)构建项目,但这似乎不会影响导出的JAR文件。 关于如何导出要在旧JRE上执行的Runnable JAR文件的任