在 Ubuntu 上配置 Oracle JDK 的替代安装的方法?

在 Ubuntu 上配置 Oracle JDK 的替代安装的方法?

在Ubuntu 16.04上安装最新的Oracle JDK(8或9)时,我发现了几个讨论:

我把他们的方式总结为以下几点:

  • 有的用update-alternatives.其中,有些用它来表示java,javacjavaws(例子),而有些则将其用于更多命令( 例子,例子,例子,例子)。我不确定哪一个给出了要应用的命令的完整列表update-alternatives

  • 一些使用update-java-alternatives例子,例子, ), 但有人说它不适用于手动安装

  • 有些同时使用update-alternativesupdate-java-alternatives(例子

  • 有些人改变了几个环境变量,并认为前两种方法不必要地复杂(例子, )

  • 有些同时使用update-alternatives和更改多个环境变量:(例子

  • 一些从 ppa:webupd8team/java 安装(例子,例子,例子

我想知道推荐哪种方式?

谢谢。

答案1

当我说我推荐update-java-alternativesJava 替代方案时,我假设安装的任何 Java 提供程序都提供了必要的基础结构。 Debian 及其衍生版本中提供的 OpenJDK 软件包就是这种情况,但其他 JDK 软件包不一定如此,手动安装的 JDK 也不太可能出现这种情况。使用创建的 Oracle JDK 包java-package 提供必要的基础设施。我认为手动设置所有 Java 命令的替代方案是浪费人们时间的明智之举:如果您想安装 Oracle JRE 或 JDK,请使用java-package.

重点update-java-alternatives是允许默认 JRE/JDK 工具的设置保持一致。理论上,这可以通过使用update-alternatives--slave关系”来完成。然而,这通常不适用于 OpenJDK 软件包,因为您可以安装可用工具的子集,而这update-alternatives并不能解决问题。因此创建了update-java-alternatives,它可以处理任何工具安装完毕,没有抱怨任何其他事情。为了update-java-alternatives正常工作,JRE/JDK 包必须在/usr/lib/jvm(例如 .java-1.8.0-openjdk-amd64.jinfo)。 (update-alternatives显然,基于 RPM 的发行版确实可以解决这个问题,但我还没有研究细节。)

Java 本身有自己的方式在多个已安装的 JRE/JDK 中进行选择,即JAVA_HOME环境变量。update-java-alternativesJAVA_HOME确实是互补的:应该可以根据您的要求将两者设置为指向不同的 JRE/JDK。update-java-alternatives允许系统管理员指定哪个 JRE/JDK 应该是系统上的默认值(事实上,人们可能会认为它允许包维护者指定哪个应该是默认值 - 这一切都应该对管理员和用户透明地工作)。JAVA_HOME允许任何用户或启动脚本指定在特定环境中应使用哪个 JRE/JDK。在 Unix 风格的系统上,事情有些崩溃的地方是PATH-handling,因为PATH不能设置为动态使用JAVA_HOMEchoicejavajavac(与 Windows 不同);因此,如果您希望默认值等跟踪您的设置(添加到 的开头),您需要记住PATH在更改 时重新设置您的。JAVA_HOMEjavaJAVA_HOME$JAVA_HOME/binPATH

所有这一切的收获与我的回答类似设置环境变量可以替代使用“update-alternatives”吗?:系统管理员应该使用update-java-alternatives为系统定义默认的JRE/JDK(或让软件包自行选择),用户可以使用JAVA_HOME为特定环境定义JRE/JDK。

相关内容