Java 从OpenJDK窗口创建jre
我们正在从OracleJDK/JRE切换到OpenJDK。现在我只找到了JDK,但我想从OpenJDK获得一个JRE。这是为了在客户机上安装我们的应用程序,而无需拥有完整的JDK 有没有办法从OpenJDK for Windows X64创建JRE包?根据文档1: Windows XP不是受支持的平台,但所有较新的Windows都应该能够构建OpenJDK 然后,它继续解释Cygwin是进行构建所必需的,对本机编译器和库的要求,以及编译源代码树中的Java类所必需的“引导”JDK问题 但明确的含义是,您可以在Windows和for Windows上构建OpenJDK。。。即使最终结果不受Oracle或OpenJDK项目的支持 请注意,构建文档描述了创建JRE和JDK“映像”的make目标。我认为这是说,这些是可以复制到目标系统并使用的二叉树。你可以从中创建拉链 但更简单的方法是使用“jlink”生成类似JRE的可执行文件;看Java 从OpenJDK窗口创建jre,java,Java,我们正在从OracleJDK/JRE切换到OpenJDK。现在我只找到了JDK,但我想从OpenJDK获得一个JRE。这是为了在客户机上安装我们的应用程序,而无需拥有完整的JDK 有没有办法从OpenJDK for Windows X64创建JRE包?根据文档1: Windows XP不是受支持的平台,但所有较新的Windows都应该能够构建OpenJDK 然后,它继续解释Cygwin是进行构建所必需的,对本机编译器和库的要求,以及编译源代码树中的Java类所必需的“引导”JDK问题 但明确的含
@Andrew Henle指出,开展自己的JRE有成本和风险(如果你把自己放在公司律师的心态中)。无论您是在内部使用还是向客户提供。如果这是一个问题,那么您就有点为难了:
- 从Java9开始,Oracle根本不提供JRE发行版。不适用于Oracle Java。不适用于OpenJDK Java。就Oracle而言,JRE在Java8之后结束
- 你为自己构建的任何东西都是一种成本和(erm)风险
1-该链接用于文档的Java 9版本。对于其他人,您应该能够在源代码树的同一位置找到相应的“building.html”文档。据我所知,您可以下载OpenJDK For Windows的唯一位置是。但是,它们似乎只提供完整的JDK,因此,如果您只想要JRE,您需要按照Stephen C的建议自己构建它。自Java 9以来,您可以使用为应用程序创建自定义运行时环境,只使用实际需要运行的模块,它通常甚至比传统的JRE更小。自从oracle宣布许可证更改以来,我使用openjdk 11代替jre8。我的客户对他们更改协议感到不满 为了让它工作,我所要做的就是将sdk文件夹重命名为jre 我遇到的一个问题是外部库dll。OpenJDK抱怨在类路径中找不到的地方。为了解决这个问题,我刚刚将DLL复制到system32文件夹 希望这有帮助
StuartAmazon Corretto OpenJDK拥有JDK和JRE的版本正如其他人所提到的,自Java 9以来,不再有单独的JRE与JDK一起发布。您需要使用
jlink
并指定代码所依赖的模块来生成自定义jre
因为这可能会很麻烦,所以我创建了一个基于web的工具,以便使用jlink
从OpenJDK实现(如Oracle HotSpot、Eclipse OpenJ9或Amazon Corretto)创建自定义JRE。该工具将根据您的需要为您提供正确的jlink
命令
我还介绍了一种为那些只需要基本轻量级(~40-60MB)JRE的人制作标准JavaSEJRE的方法。如果您知道如何使用终端,那么为JDK 9及更高版本创建通用JRE只需不到2分钟的时间
在这里尝试一下-EasyJRE:受我使用命令的文章启发:
java——列出模块
以获取所有可用openjdk模块的列表jlink--无头文件--无手册页--compress=2--添加模块--输出java运行时
以创建紧凑的jrejlink——无头文件——无手册页——压缩=2——添加模块java.base、java.compiler、java.datatransfer、java.desktop、java.instrument、java.logging、java.management、java.management、java.management.rmi、java.naming、java.net.http、java.prefs、java.rmi、java.scripting、java.se、java.security.jgss、java.security.sasl、java.smartcardio、java.sql、java.sql.rowset、,java.transaction.xa、java.xml、java.xml.crypto、jdk.accessibility、jdk.aot、jdk.attach、jdk.charset、jdk.compiler、jdk.crypto.cryptoki、jdk.crypto.ec、jdk.crypto.mscapi、jdk.dynalink、jdk.editpad、jdk.httpserver、jdk.internal.ed、jdk.internal.jvmstat、jdk.le、jdk.internal.opt.vm.ci、jdk.internal.vm.vm.vm.vm.vm.compiler、,jdk.internal.vm.compiler.management,jdk.jartool,jdk.javadoc,jdk.jcmd,jdk.jconsole,jdk.jdeps,jdk.jdi,jdk.jdk.jdwp.agent,jdk.jdk.jfr,jdk.jlink,jdk.jshell,jdk.jdk.jsobject,jdk.jstatd,jdk.localedata,jdk.management,jdk.agent,jdk.management,jdk.jdk.management.dns,jdk.jdk.naming.dns,jdk.naming.rmi,jdk.net,jdk.pack.pack.jsk.js,sctp、jdk.security.auth、jdk.security.jgss、jdk.unsupported、jdk.unsupported.desktop、jdk.xml.dom、jdk.zipfs——输出java运行时
,因此我将发布一些比SteinarH发布的内容更简单的内容。我不想自己去整理这份清单,所以。。。。这是给你的。另外,为了更简洁一点,我不会给它贴上java运行时
,而是jre-11
(或者您正在使用的任何版本)
这是PowerShell:
jlink--无头文件--无手册页--compress=2--添加模块$($(java--列出模块)-join“,“-replace”@[0-9]*”--output jre-11
在这个站点上,您可以获得jdk和jre(jdk包含jre)
import os
jmod_str = os.popen('java --list-modules').read()
init = jmod_str.index('@')
end = jmod_str.index('\n')
version = jmod_str[init:end]
jmod_list = jmod_str.replace(version, '').replace('\n', ',')
jmod_list = jmod_list[:-1] if jmod_list[-1] == ',' else jmod_list
cmd = 'jlink --no-header-files --no-man-pages --compress=2 --module-path ..\jmods --add-modules '+ jmod_list + ' --output ..\jre'