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


Answers:


175

我把线:

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文件中设置使用情况。


4
如果您使用的是OpenJDK而不是Oracle的(Sun)JDK,则可以使用/usr/lib/jvm/java-1.6.0-openjdk-amd64。
pm_labs 2012年

7
您可以使用export JAVA_HOME = / usr / lib / jvm / default-java /
noomz 2013年

@noomz如果default-java不存在,如何得到?
AHungerArtist 2013年

@AHungerArtist如果安装openjdk或其他受官方支持的Ubuntu软件包,您会得到。不幸的是,使用webupd8 / java ppa的Oracle JDK不支持它。实际上,我完全不清楚该oracle-java7-set-default软件包的功能。
梅尔文2014年

您将其放在文件中的什么位置?
Czipperz 2015年

166

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

/etc/environment

添加此行:

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


@metdos上面的答案不是全局的还是系统级别的?
Android Killer,

1
@AndroidKiller您检查了Daniel Kullmann指出的链接吗?
metdos

@metdos效果很好,但是引用变量对我$JAVA_HOME不起作用... 像这样使用时无法解析PATH=$JAVA_HOME/bin,尝试重新启动,没有效果。我一定要exportset JAVA_HOME任何对本文件或我的个人资料?
拉菲安

@Raffian我不确定不同的极端情况,这样对我来说效果很好,有关更多信息,我建议您阅读help.ubuntu.com/community/EnvironmentVariables
metdos

53

要将Oracle的Java SE Development Kit设置为系统默认Java,只需从此处下载最新的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上测试了该解决方案,并且在它们两者中均有效。


1
是的,此解决方案比公认的解决方案更干净。
simone cittadini

@JayminGajjar无需表达感激之情。在本网站中支持好的问题/答案的机制是对它们进行投票。如果您没有足够的声誉来做到这一点,但是没有足够的评论,请尝试在其中添加一些有用的信息,例如有关您测试的系统和操作系统的信息,以及发现此解决方案有效的方法
。–梭子鱼

@梭子鱼我已经投票了,你是对的信息,它在Ubuntu 16.10 64位服务器OS上为我工作:)
Jaymin Gajjar 16-10-19

20

如果您希望所有用户都可以使用此环境变量,并且在系统启动时将其添加到/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

我的第二个问题是-它应该指向java-6-sun还是java-6-sun-1.6.0.24?

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



10

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

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

您应该JAVA_HOME 基于当前使用的Java进行设置。 readlink将为当前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::")


5

看到这个 ; 跑

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:从此答案可以使用

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。


另一种方法:java -XshowSettings 2>&1 | grep -e 'java.home' | awk '{print "JAVA_HOME="$3}' | sed "s/\/jre//g" >> /etc/environment
Xdg
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.