跳到主要内容

JEP 231:删除启动时 JRE 版本选择

概括

删除在 JRE 启动时请求非正在启动的 JRE 版本的功能。

动机

“多个 JRE”(“mJRE”)功能允许开发人员指定可用于启动应用程序的 JRE 版本或版本范围。版本选择标准可以在应用程序jar文件的清单条目 ( JRE-Version) 中指定,也可以作为启动器的命令行选项 ( -version:)指定java。如果启动的 JRE 版本不满足条件,则启动器会搜索满足条件的版本,如果找到,则启动该版本。

实际上,部署应用程序需要做的不仅仅是选择特定的 JRE。现代应用程序通常通过Java Web Start (JNLP)、本机操作系统打包系统或主动安装程序进行部署,所有这些技术都有自己的方式来查找(有时甚至安装和稍后更新)适合应用程序的 JRE。

mJRE 功能仅解决整个部署问题的一部分。此外,当它在 JDK 5 中引入时,它从未被完整记录:命令的文档-version:中提到了该选项,但任何常见的 JDK 文档或 Java SE 平台规范中都没有提到清单条目。据我们所知,这个功能很少被使用。它不必要地使 Java 启动器的实现变得复杂,使其维护和增强变得繁琐。java``JRE-Version

描述

删除 mJRE 功能。修改启动器如下:

  • -version:如果在命令行上给出了该选项,则发出错误消息并退出,并且

  • JRE-Version如果在文件中找到清单条目,则发出警告消息并继续jar

在第二种情况下,发出警告而不是致命错误的理由是,清单条目可能存在于jar无法轻易修改的旧文件中,因此最好继续而不是中止。我们希望在 JDK 10 中将此情况更改为致命错误。

测试

需要进行测试以确保删除该功能并报告适当的警告和错误。