Ubuntu:将路径从 OpenJDK 6 更改为 Oracle JDK 7

Posted

技术标签:

【中文标题】Ubuntu:将路径从 OpenJDK 6 更改为 Oracle JDK 7【英文标题】:Ubuntu: change the path from OpenJDK 6 to Oracle JDK 7 【发布时间】:2014-02-02 14:33:06 【问题描述】:

下载最新的 .tar 文件后,我运行 tar zxvf jdk-7u45-linux-x64.tar.gz 来提取 java 文件。

.bashrc文件(vi ~/.bashrc)中设置路径如下;

export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_45/bin/java
export PATH=$PATH:/usr/lib/jvm/jdk1.7.0_45/bin
export JDK_HOME=/usr/lib/jvm/jdk1.7.0_45    
export JRE_HOME=/usr/lib/jvm/jre1.7.0_45

现在,运行命令java -version 或哪个java,java PATH 仍然指向旧的java 版本(java version "1.6.0_27")。

我知道默认的 ubuntu 采用 OpenJDK 路径。我必须将路径更改为最新版本作为我在.bashrc 文件中设置的系统环境变量。

另外,sudo update-alternatives --config java

Selection    Path                                      Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-7-oracle/jre/bin/java    1062      auto mode
  1            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      manual mode
  2            /usr/lib/jvm/java-7-oracle/jre/bin/java    1062      manual mode
* 3            /usr/lib/jvm/jdk1.7.0_45/bin/java          1         manual mode
Press enter to keep the current choice[*], or type selection number: 3

【问题讨论】:

【参考方案1】:

在终端中运行命令:

sudo update-alternatives --config java 

从命令行设置您想要使用的 JRE 版本,就像 java 的可用版本安装一样:1.6 和 1.8 见下文:

并且选择 1 个选项并设置 java-6 版本,因为当前选项已在 java-8 中设置。

【讨论】:

【参考方案2】:

运行

sudo  update-java-alternatives --list

按名称和目录列出机器上的所有 Java 安装,然后运行

sudo  update-java-alternatives --set [JDK/JRE name e.g. java-8-oracle]

选择要使用的 JRE/JDK。

如果你想为每个 Java 任务使用不同的 JDK/JRE,你可以运行 update-alternatives 来一次配置一个 java 可执行文件;你可以运行

sudo  update-alternatives --config java[Tab]

查看可以配置的 Java 命令(java、javac、javah、javaws 等)。然后

sudo  update-alternatives --config [javac|java|javadoc|etc.]

将该 Java 任务/命令与特定的 JDK/JRE 相关联。

您可能还需要为某些应用程序设置 JAVA_HOME:从this answer 可以使用

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")

对于 JRE,或

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:jre/bin/java::")

对于 JDK。

【讨论】:

【参考方案3】:

Ubuntu(和 Debian)有一种优雅的方式来管理像 jdk 这样的库。

使用update-alternatives,您可以在同一系统上管理多个jdk 库,选择您想要使用的作为主要库。

首先你必须为新安装的 jdk 安装一个替代方案:

sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.7.0_45/bin/java" 1
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk1.7.0_45/bin/javac" 1

通过这种方式,您可以安装新的jdk 作为原始jdk 的替代品。 然后你可以选择你想使用哪一个:

sudo update-alternatives --config java
sudo update-alternatives --config javac

系统会要求您选择要使用的 jdk,在我的系统上:

There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                           Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-6-openjdk-i386/jre/bin/java   1061      auto mode
  1            /usr/lib/jvm/java-6-openjdk-i386/jre/bin/java   1061      manual mode
* 2            /usr/lib/jvm/java-7-openjdk-i386/jre/bin/java   1051      manual mode

Press enter to keep the current choice[*], or type selection number: 

您可以随时使用--list 选项查看javajavac 的替代方案:

sudo update-alternatives --list java
sudo update-alternatives --list javac

要查看更多选项,请查看 update-alternatives 手册页。

【讨论】:

同时运行 sudo update-alternatives --install "/usr/bin/javac" "java" "/usr/lib/jvm/jdk1.7.0_45/bin/java" 1 update-alternatives:错误:替代链接 /usr/bin/javac 已由 javac 管理。 @DevendraSingh 你有一个错字:不要混淆javacjava 你有“/usr/bin/javac”指向“/usr/lib/jvm/jdk1.7.0_45/bin /java" 我仍然无法更改路径。 在您的问题中发布update--alternatives --list java的输出 这似乎不起作用我这样做后得到“/usr/bin/java 没有这样的文件或目录”。请帮助【参考方案4】:

尝试在终端中输入以下内容。

sudo update-alternatives --config java

输出将是一些选项,您可以选择安装到您计算机上的正确选项。

【讨论】:

【参考方案5】:

你可能想这样做

export PATH=/usr/lib/jvm/jdk1.7.0_45/bin:$PATH

OpenJDK 可能仍在路径中,Linux 将使用它找到的第一个 java

如果不需要,建议卸载 OpenJDK。

【讨论】:

以上是关于Ubuntu:将路径从 OpenJDK 6 更改为 Oracle JDK 7的主要内容,如果未能解决你的问题,请参考以下文章

如何在ubuntu上将php5更改为php 5.6版本

如何将 EC2 用户从 ubuntu 更改为 mongodb?

如何将路径从 apache 更改为 nginx

我如何将我的 JRE 从 1.8.0.241 更改为最新的 13 [重复]

将ubuntu由图形模式启动更改为命令行启动

带有 RCurl 的 sftp 协议 - 最后一步,如何将 R 路径从 usr/lib 更改为 usr/local/lib