何时以及为何 运行 替代方案 --install java jar javac javaws 在 linux 中安装 jdk

When and Why run alternatives --install java jar javac javaws on installing jdk in linux

在linux中安装java(我用的是CentOS,RHEL也一样),我用的是这个命令

rpm -Uvh /path/to/binary/jdk-7u55-linux-x64.rpm

并验证 java

java -version

看一个教程,它说运行遵循4个命令,不知道为什么

## java ##
alternatives --install /usr/bin/java java /usr/java/latest/jre/bin/java 200000
## javaws ##
alternatives --install /usr/bin/javaws javaws /usr/java/latest/jre/bin/javaws 200000

## Install javac only
alternatives --install /usr/bin/javac javac /usr/java/latest/bin/javac 200000
## jar ##
alternatives --install /usr/bin/jar jar /usr/java/latest/bin/jar 200000

我知道如果 java 安装了多个版本,你可以从

select 版本使用
alternatives --config java

那为什么要 运行 alternative --install 分别为每个可执行文件。

我看过 this 问题但没有得到我的答案

javajavawsjavacjar 都是 JDK 使用的不同可执行文件。当您 运行 alternatives --config java 时,您只是在配置您希望 运行 的 java 可执行文件的哪个版本。然而,JDK 包括,例如,javac 编译器。您还需要配置要使用的编译器版本。

alternatives 命令简而言之,用于维护对符号(或符号)链接的查找。在您可以使用 --configure 选项选择要 运行 的 java 版本之前,您必须首先使用 --install 选项注册可执行文件的实际路径。 alternatives --install 没有安装任何软件。它只是向 alternatives 框架注册一些路径和别名。 (注意:alternatives 不是使用 alias 命令。我的意思是传统意义上的 "aliases"。)

您还应该了解 rpm 命令的作用。实际上,它只是将一组二进制文件放到特定目录中。该目录可能冗长乏味,无法明确指定:/some/path/to/lib/jvm/java-1.x.x-etc-etc-x86/jre/bin/java。您不想每次都指定它 运行 java。相反,我们设置了一些符号链接。

您可能还想阅读 PATH works in linux

如果您尝试跟踪您机器的设置,它可能会变得更清楚。这是我运行:

> which java
/usr/bin/java
> ls -l /usr/bin/java
lrwxrwxrwx 1 root root 22 Aug 14  2014 /usr/bin/java -> /etc/alternatives/java
> ls -l /etc/alternatives/java
lrwxrwxrwx 1 root root 73 Aug 14  2014 /etc/alternatives/java -> /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65-2.5.1.2.fc19.x86_64/jre/bin/java

当您在 Linux 上安装 JDK 时,安装的内容取决于包的类型、版本和分发。 linux上的安装位置可以参考以下link:

JDK Installation for Linux Platforms - Version 8

JDK Installation for Linux Platforms - Version 7

安装 JDK 后,包含工具的 bin 文件夹可能不会添加到环境变量 PATH。在终端上键入的命令需要来自 PATH 变量中指定的位置。如果 JDK\bin 没有被添加,用户需要手动配置它,如 Installing the JDK Software

中所述

alternatives 命令正在用于创建符号 link。这里指示使用命令添加javacjavaw/usr/bin等工具,默认存在于PATH变量中

If( 你可以在 JDK/bin && 之外执行 java -version 而不是通过指定完整路径 && 如果版本和包打印为您安装的包 ){ 您不需要 运行 alternatives命令。}

也许,指南已经过时了。

安装rpm后,可以查看:

alternatives --display java

看看你是否能看到新版本是由替代品控制的,如果不是你需要“--install”它们;否则,我认为您可以跳过“--install”部分。

这些 "alternatives" 脚本和类似工具只是将所需 JDK 版本的二进制文件符号链接到它们预期的目录。它适用于您的命令行上应该可用的所有命令。

"all" 的定义取决于您的发行版。

要将 java JRE/JDK 的不同版本作为 OS 中的默认版本:

sudo alternatives --install /usr/bin/java java [path_to_java_bin] 1 

我的例子是:

sudo alternatives --install /usr/bin/java java /usr/java/jdk1.7.0_80/bin/java 1 

然后 运行 配置 select 替代 java 版本:

 sudo /usr/sbin/alternatives --config java

选择 1,2 或您想要的选项

然后检查更改:

java -version

对于 Ubuntu 使用 update-alternatives