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
选项查看java
或javac
的替代方案:
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 你有一个错字:不要混淆javac
和java
你有“/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的主要内容,如果未能解决你的问题,请参考以下文章
如何将 EC2 用户从 ubuntu 更改为 mongodb?
我如何将我的 JRE 从 1.8.0.241 更改为最新的 13 [重复]
带有 RCurl 的 sftp 协议 - 最后一步,如何将 R 路径从 usr/lib 更改为 usr/local/lib