当前位置: 首页>>技术教程>>正文


如何将Oracle的Java设置为Ubuntu中的默认Java?

, ,

问题描述

如何在Ubuntu中更改JAVA_HOME的值以指向Oracle的Java?

它应该指向java-6-sun还是java-6-sun-1.6.0.24

最佳思路

我把线:

export JAVA_HOME=/usr/lib/jvm/java-7-oracle

在我的~/.bashrc文件中。

/usr/lib/jvm/java7-oracle应该是指向/usr/lib/jvm/java-7-oracle-[version number here]的符号链接。

它是一个符号链接的原因是,如果有JVM的新版本,则不需要更新.bashrc文件,它应自动指向新版本。

如果要全局和在系统级别设置JAVA_HOME环境变量,则意味着应在/etc/environment文件中进行设置。

次佳思路

如果要在全局和系统级别进行更改;

/etc/environment

添加此行:

JAVA_HOME=/usr/lib/jvm/java-7-oracle

第三种思路

要将Oracle的Java SE Development Kit设置为系统默认Java,只需从here下载最新的Java SE Development Kit,然后在文件系统中您喜欢的位置创建一个目录,例如/usr/java现在将您刚刚下载的文件提取到该目录中:

$ sudo tar xvzf jdk-8u5-linux-i586.tar.gz -C /usr/java

现在设置您的JAVA_HOME环境变量:

$ JAVA_HOME=/usr/java/jdk1.8.0_05/
$ sudo update-alternatives --install /usr/bin/java java ${JAVA_HOME%*/}/bin/java 20000
$ sudo update-alternatives --install /usr/bin/javac javac ${JAVA_HOME%*/}/bin/javac 20000

确保通过以下方式将Oracle的Java设置为默认Java:

$ update-alternatives --config java

你得到这样的东西:

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

  Selection    Path                                           Priority   Status
------------------------------------------------------------
* 0            /opt/java/jdk1.8.0_05/bin/java                  20000     auto mode
  1            /opt/java/jdk1.8.0_05/bin/java                  20000     manual mode
  2            /usr/lib/jvm/java-6-openjdk-i386/jre/bin/java   1061      manual mode

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

请注意左边数字前的星号,如果未设置正确的星号,请输入数字并按Enter选择正确的星号。现在测试您的java:

$ java -version

如果您得到类似以下的内容,那么就可以了:

java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) Server VM (build 25.5-b02, mixed mode)

还请注意,您可能需要root权限或在sudoers组中才能执行此操作。我已经在ubuntu 12.04和Debian wheezy上测试了该解决方案,并且在它们两者中均有效。

第四种思路

如果要让所有用户都可以使用此环境变量,并且希望在系统启动时将其添加到/etc/profile.d/java.sh中(如有必要,请创建):

export JDK_HOME=/usr/lib/jvm/java-7-oracle
export JAVA_HOME=/usr/lib/jvm/java-7-oracle

然后在终端运行:

sudo chmod +x /etc/profile.d/java.sh
source /etc/profile.d/java.sh

My second question is – should it point to java-6-sun or java-6-sun-1.6.0.24 ?

它应该始终指向java-7-oracle,因为该符号链接到最新安装的java-7-oracle(假设您是从Ubuntu存储库中安装Java的,现在是从oracle.com上的下载中安装的)。

第五种思路

Java 6的

export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-amd64

或Java 7

export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64

第六种思路

如果要进行任何类型的开发,则需要指向JDK(Java开发工具包)。否则,您可以指向JRE(Java运行时环境)。

JDK包含JRE拥有的所有内容以及更多内容。如果您只是执行Java程序,则可以指向JRE或JDK。

您应该基于当前使用的Java设置JAVA_HOMEreadlink将为当前Java打印符号链接的值,而sed将其调整到JRE目录:

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

如果要将JAVA_HOME设置为JDK,则应再增加一个文件夹:

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

第七种思路

如果要在安装多个JDK时使用特定版本的Java,则仅设置JAVA_HOME可能不起作用。

您需要使用sudo update-alternatives --config java设置默认Java。

请参考https://askubuntu.com/questions/121654/how-to-set-default-java-version

第八种思路

参见this;跑

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。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/10396.html,未经允许,请勿转载。