【问题标题】:How to set Oracle's Java as the default Java in Ubuntu?如何将 Oracle 的 Java 设置为 Ubuntu 中的默认 Java?
【发布时间】:2011-09-22 13:47:04
【问题描述】:

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

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

【问题讨论】:

    标签: java ubuntu java-home


    【解决方案1】:

    我把这条线:

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

    【讨论】:

    • 或 /usr/lib/jvm/java-1.6.0-openjdk-amd64 如果您使用的是 OpenJDK 而不是 Oracle 的 (Sun) JDK。
    • 可以使用 export JAVA_HOME=/usr/lib/jvm/default-java/
    • @noomz 如果 default-java 不存在,你如何得到它?
    • @AHungerArtist 如果您安装 openjdk 或其他官方支持的 Ubuntu 软件包,您就会明白这一点。不幸的是,使用 webupd8/java ppa 的 Oracle JDK 不支持它。事实上,我完全不清楚 oracle-java7-set-default 包的作用。
    • 你把它放在文件的什么地方?
    【解决方案2】:

    如果您想在全局和系统级别更改它;

    在

    /etc/environment
    

    添加这一行:

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

    【讨论】:

    • @metdos 上面的答案不是全局或系统级别的?
    • @AndroidKiller 你检查了 daniel kullmann 指出的链接吗?
    • @metdos 工作得很好,但是引用变量对我不起作用...$JAVA_HOME 像这样使用PATH=$JAVA_HOME/bin 时无法解决,尝试重新启动,没有效果。我是否必须在此文件或我的个人资料中 export 或 set JAVA_HOME?
    • @Raffian 我不确定不同的极端情况,这种方式对我来说非常有效,有关更多信息,我建议您阅读help.ubuntu.com/community/EnvironmentVariables
    【解决方案3】:

    要将 Oracle 的 Java SE 开发工具包设置为系统默认 Java,只需从 here 下载最新的 Java SE 开发工具包,然后在文件系统中的某个位置创建一个目录,例如 /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:
    

    注意左边数字前的星号,如果没有设置正确的星号,请输入它的数字并按回车键选择正确的星号。 现在测试你的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 上测试了这个解决方案,并且它在这两个版本中都有效。

    【讨论】:

    • 是的,这个解决方案比公认的解决方案干净得多。
    • @JayminGajjar cmets 表示感谢是不必要的。在本网站上支持好的问题/答案的机制是对它们进行投票。如果您没有足够的声誉来做到这一点,但有足够的评论,请尝试在其中包含一些有用的信息,例如您测试了什么系统和操作系统,并发现此解决方案有效等。
    • @Barracuda 我已经投票了,您对信息的看法是正确的,它在 Ubuntu 16.10 64 位服务器操作系统上对我有用 :)
    【解决方案4】:

    如果您希望此环境变量可供所有用户使用并在系统启动时使用,那么您可以将以下内容添加到 /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 下载)。

    【讨论】:

      【解决方案5】:

      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

      【讨论】:

        【解决方案6】:

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

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

        您应该根据当前使用的 Java 设置 JAVA_HOME。 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::")
        

        【讨论】:

          【解决方案7】:

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

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

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

          【讨论】:

            【解决方案8】:

            见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。

            【讨论】:

            • 另一种方法:java -XshowSettings 2>&1 | grep -e 'java.home' | awk '{print "JAVA_HOME="$3}' | sed "s/\/jre//g" >> /etc/environment
            【解决方案9】:

            从Here下载所需的Java版本

            1. wget -c --no-cookies --no-check-certificate --header "Cookie: oraclelicense=accept-securebackup-cookie" http://monalisa.cern.ch/MONALISA/download/java/jdk-8u172-linux-x64.tar.gz

            2. cd /opt/

            3. tar -xvzf jdk-8u172-linux-x64.tar.gz 4.JAVA_HOME=/opt/jdk1.8.0_172/

            4. update-alternatives --install /usr/bin/java java ${JAVA_HOME%*/}/bin/java 20000

            5. update-alternatives --install /usr/bin/javac javac ${JAVA_HOME%*/}/bin/javac 20000

            6. update-alternatives --config java

            7. 选择您要使用的版本。例如:数字 1 将 表示'/opt/jdk1.8.0_172/bin/java' iTerm

            8. 验证java版本:java -version

              最后一步:

              重启服务。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2013-07-12
              • 2014-12-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-03-15
              • 2011-08-31
              • 1970-01-01
              相关资源
              最近更新 更多