Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.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 从OpenJDK窗口创建jre_Java - Fatal编程技术网

Java 从OpenJDK窗口创建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问题 但明确的含

我们正在从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的可执行文件;看


@Andrew Henle指出,开展自己的JRE有成本和风险(如果你把自己放在公司律师的心态中)。无论您是在内部使用还是向客户提供。如果这是一个问题,那么您就有点为难了:

  • 从Java9开始,Oracle根本不提供JRE发行版。不适用于Oracle Java。不适用于OpenJDK Java。就Oracle而言,JRE在Java8之后结束

  • 你为自己构建的任何东西都是一种成本和(erm)风险

幸运的是,有第三方供应商在Windows上为Java提供JRE发行版。(在撰写本文时,OpenJDK和Azul都采用)

或者,只需使用Oracle JDK发行版即可。磁盘空间便宜,网络速度快



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文件夹

希望这有帮助


Stuart

Amazon 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运行时
    以创建紧凑的jre
  • 对于OpendJDK 12,这是我最后使用的命令:


    jlink——无头文件——无手册页——压缩=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'