在Ubuntu上将openjdk替换为oracle-jdk

我有一个Ubuntu系统,想要用Oracle JDK替换我的OpenJDK。
但是,如果我移除OpenJDK然后安装Oracle JDK,当我尝试安装一些软件包时,它们会要求安装OpenJDK,而我不想这样做。
有没有办法在Oracle JDK的基础上安装这些软件包?其中一个软件包是Freemind。

除了freemind之外,你想安装哪些软件包需要open-jdk? - Seth
我发现Oracle JDK在/etc/profile.d/jdk.sh中将自己添加到了PATH中。删除这个文件并重新启动一个新的shell,可以让update-alternatives正常工作。 - jozxyqk
4个回答

你可以按照以下步骤完全删除 OpenJDK 并重新安装 Oracle Java JDK
  1. 通过以下命令完全删除 OpenJDK

    sudo apt-get purge openjdk-\*
    
  2. 在此处下载 Oracle Java JDK here

    注意:下载适合的文件,例如如果您的系统是 x64 Ubuntu(即 Debian),则下载的文件名为: jdk-8u51-linux-x64.tar.gz

    要查找您的操作系统版本,请 check here

  3. 通过以下命令在 /usr/local/ 目录下创建一个名为 java 的文件夹:

    sudo mkdir -p /usr/local/java
    
  4. 将下载的文件复制到目录 /usr/local/java 中。为此,请进入下载文件所在的目录,并使用以下命令将该文件复制到 /usr/local/java/

    sudo cp -r jdk-8u51-linux-x64.tar.gz /usr/local/java/
    
  5. 进入 /usr/local/java/ 目录,并使用以下命令解压缩已复制的文件:

    sudo tar xvzf jdk-8u51-linux-x64.tar.gz
    
  6. 解压缩后,您应该看到一个名为 jdk1.8.0_51 的文件夹。

  7. 通过以下命令打开 /etc/profile 文件,更新 PATH 文件,并将以下内容粘贴到文件末尾:

    JAVA_HOME=/usr/local/java/jdk1.8.0_51
    PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
    export JAVA_HOME
    export PATH
    
  8. 保存并退出。

  9. 使用以下命令告知系统新的 Oracle Java 版本可用:

    sudo update-alternatives --install "/usr/bin/java" "java" "/usr/local/java/jdk1.8.0_51/bin/java" 1
    sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/local/java/jdk1.8.0_51/bin/javac" 1
    sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/local/java/jdk1.8.0_51/bin/javaws" 1
    
  10. 使用以下命令将 Oracle Java JDK 设置为默认版本:

    sudo update-alternatives --set java /usr/local/java/jdk1.8.0_51/bin/java
    sudo update-alternatives --set javac /usr/local/java/jdk1.8.0_51/bin/javac
    sudo update-alternatives --set javaws /usr/local/java/jdk1.8.0_51/bin/javaws
    
  11. 通过以下命令重新加载系统范围的 PATH /etc/profile:

    source /etc/profile
    
  12. 重新启动您的系统。

  13. 使用 java -version 命令检查 Java JDK 版本。如果安装成功,将显示如下内容:

    java version "1.8.0_51"
    Java(TM) SE Runtime Environment (build 1.8.0_51-xxx)
    Java HotSpot(TM) Server VM (build 25.51-xxx, mixed mode)
    

就是这样!

注意:我们假设下载的文件名为jdk-8u51-linux-x64.tar.gz,并在步骤2、4和5中使用了这个名称。这可能取决于操作系统类型、处理器类型(即32位或64位)。


1除了这种手动安装Oracle JDK的正确方法之外,还有一个可以从WebUpd8 PPA获取的软件包,该软件包也会得到更新。因此,没有必要手动安装每个新版本。请参阅我在这里的回答:http://askubuntu.com/questions/466166/your-java-version-is-out-of-date-on-ubuntu-2014-04/466172#466172 - lschuetze
3不要使用目录jdk1.8.0_51,创建一个名为"jdk"的符号链接指向该目录,下次更新时只需解压JDK tarball并重新创建符号链接,就完成了。 - ColinM
对于Ubuntu用户:下面有一个来自@mihaic的经过验证的方法,对我来说非常有效。 - Carson Ip
你是摇滚巨星 - Bhupinder
请注意,如果您想在Ubuntu服务器(无图形界面)上下载JDK,则可以使用以下命令:wget --header "Cookie: oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/9.0.4+11/c2514751926b4512b076cc82f959763f/jdk-9.0.4_linux-x64_bin.tar.gz"您可以随时通过返回Oracle下载页面并生成新的命令来复制最新版本。 - Toan Nguyen
在某些情况下,当您寻找要卸载的软件包时,可能需要搜索\*openjdk-\*。当我使用openjdk-\*来卸载Java时,只有一些软件包被移除,并且java -version仍然显示我的系统上安装了 openjdk 的一个版本。 - Xetnus

你不需要移除openjdk来使用/安装oracle的jdk。只需安装oracle的jdk,并通过配置来选择要使用的java即可:
sudo update-alternatives --config java

你可以在这里找到更多帮助:https://help.ubuntu.com/community/Java

我需要找到一个方法,在我的Ubuntu系统上只有一个Java版本。谢谢。 - littleali
这是一个很好的答案。在Debian jessie上,使用Groovy会强制安装openjdk,但是我的工作需要(别问为什么)使用Oracle JDK进行编译。这个选项让我可以同时保留openjdk和oracle jdk的安装,以便一切都能正常运行。谢谢! - sanimalp

在Ubuntu 14.04/16.04上进行测试。分为三个步骤:
从webupd8team存储库安装oracle-java7-installer(或oracle-java8-installer)。
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-installer

确保它能正常工作,运行以下命令:
java -version

应该显示类似以下内容:
java version "1.7.0_76"
Java(TM) SE Runtime Environment (build 1.7.0_76-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.76-b04, mixed mode)

(可选)如果您确实希望/需要删除open-jdk,请执行以下操作:
sudo apt-get purge openjdk-\*

你可以在这里找到更多信息


按照您的指示操作,但出现了以下错误信息: “无法找到Java可执行文件。请检查JAVA_HOME和PATH环境变量。” - Zack S
在一年后发现自己的答案时感到惊讶,这仍然适用于Ubuntu 16.04和oracle-java8-installer。 - toto_tico
添加仓库时出现以下提示: W: 仓库 'http://ppa.launchpad.net/natecarlson/maven3/ubuntu xenial Release' 没有 Release 文件。 N: 来自此类仓库的数据无法进行验证,因此使用时可能存在潜在风险。 - crockpotveggies

在移除openjdk之后,尝试一下这个对我有效的方法:
在Ubuntu服务器上安装Oracle JDK 7(已在Ubuntu 12.04上测试通过)
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-installer

这里有一些更多的信息:https://launchpad.net/~webupd8team/+archive/java

(请注意根据您的JDK版本进行适应)