如何在 Java 11 中使用没有 JRE 的 JDK

新手上路,请多包涵

我们正计划迁移我们的 Java 8 项目以使用 Java 11。但我注意到 Java 11 没有 JRE 文件夹。

在 Java 9 和 Java 10 中,文件夹结构发生了变化,即 java\jdk1.xjava\jre1.x ,其中 x 是 Java

但是在 Java 11 中,我只得到一个文件夹,即 java\jdk-11 。如果没有 jre ,我的客户将如何使用我的应用程序?

我的理解是 Java 11 正在强制对我们的应用程序进行模块化,并且需要使用 jlink 创建我们自己的 jre 以在客户端运行应用程序。

我的理解正确吗?

原文由 Maha Lak 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
1 个回答

20 年来,JDK 附带了一个 JRE,这只是其安装在系统不同目录中的功能的一个子集。

事实上,它附带了两个相同的 JRE,一个安装在 JDK 安装目录中,一个安装在 JDK 安装目录之外。

这一直让我感到困惑,因为维护人员这样做完全是浪费精力,而且完全浪费了安装它的计算机上的磁盘空间,因为 JRE 只是复制了 JDK 可以做的一些事情已经做了。

最后,在 Java 11 中,Oracle 和 OpenJDK 团队决定结束这种愚蠢行为,只分发一个东西,即 JDK。这个 JDK 在安装后实际上比以前单独使用旧的 JRE 更小,甚至删除了一些有效的论点,即您希望为磁盘空间有限的设备提供一个单独的 JRE,这个论点从未解释过为什么 2 个 JRE 会首先安装单个 JDK,但这样做是为了证明需要 JRE 作为 JDK 的精简运行时环境。

因此,不需要单独的 JRE,而且很长一段时间都没有了,更不用说将它作为 JDK 安装的一部分包含并强行安装了。

不,您不需要创建自己的 JRE。只需在客户端计算机上安装 OpenJDK 并确保将 $JAVA_HOME/bin 添加到系统路径,就像您必须对旧 JRE 所做的那样。

哦,去掉 Windows 目录树中的任何 java*.exe 文件,某些版本的旧 JRE 安装程序不会将其放置在那里,以及一些 JRE 安装程序添加了一些奇怪条目的系统路径。

原文由 jwenting 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏