无法在 ubuntu 16.04 上使用 PPA 存储库安装 java8

Unable to install java8 using PPA repository on ubuntu 16.04

低于 2018 年 1 月 17 日的错误:

--2018-01-18 09:59:52--  http://download.oracle.com/otn-pub/java/jdk/8u151-b12/e758a0de34e24606bca991d704f6dcbf/jdk-8u151-linux-x64.tar.gz
Resolving download.oracle.com (download.oracle.com)... 104.94.43.14
Connecting to download.oracle.com (download.oracle.com)|104.94.43.14|:80... connected.
HTTP request sent, awaiting response... 302 Moved Temporarily

--2018-01-18 09:59:52--  http://download.oracle.com/otn-pub/java/jdk/8u151-b12/e758a0de34e24606bca991d704f6dcbf/jdk-8u151-linux-x64.tar.gz?AuthParam=1516269712_4add28cbea8b722e5136a80b8de32670
Connecting to download.oracle.com (download.oracle.com)|104.94.43.14|:80... connected.
HTTP request sent, awaiting response... 404 Not Found

我们正在执行以在 Ubuntu 上安装 java8 的命令:

sudo add-apt-repository ppa:webupd8team/java 
sudo apt-get update 
sudo apt-get install oracle-java8-installer

java7 和 java9 也出现类似错误。

请查看此问题,如果有解决方法请告诉我

看来,Oracle 最近更改了删除过时更新的策略(在本例中为:8u151/8u152)。遗憾的是,ppa:webupd8team/java-维护者尚未发布与最新 JDK 版本 (8u161) 相匹配的软件包更新版本。但是,他们应该这样做以更改相应 JDK 档案(由 Oracle 发布)的下载 URLs。

如果您需要紧急更新 and/or 作为 "temporary" 解决方法,您可以通过以下步骤获取最新版本的 Oracle JDK:

  1. 在您的用户主目录中创建一个 tmp 目录并通过 wget.

    下载当前的 JDK 更新 161
    mkdir ~/tmp
    cd tmp
    wget --continue --no-check-certificate --header "Cookie: oraclelicense=a" 'http://download.oracle.com/otn-pub/java/jdk/8u161-b12/2f38c3b165be4555a1fa6e98c45e0808/jdk-8u161-linux-x64.tar.gz' 
    
  2. 解压到tmp目录

    tar -xf jdk-8u161-linux-x64.tar.gz 
    
  3. 清除旧安装并将提取到 jdk1.8... 的内容移动到系统范围的 JDK 安装目录:

    sudo rm -R /usr/lib/jvm/java-8-oracle 
    sudo mkdir /usr/lib/jvm/java-8-oracle
    sudo mv jdk1.8.0_161/* /usr/lib/jvm/java-8-oracle
    sudo chown -R root:root /usr/lib/jvm/java-8-oracle
    
  4. 运行:

    sudo /etc/profile.d/jdk.sh
    
  5. 通过运行检查当前java版本:

    java -version
    

请注意:假设非 32 位系统环境,步骤 1 中使用的 URL 指向 x64 JDK。您可以通过检查 Oracle 的 official download page 轻松更改它。

希望它有所帮助(作为解决方法)。

我之前使用过另一种解决此问题的方法。对我来说,这是更简单的方法:

apt-get install oracle-java8-installer -y oracle-java8-set-default -y || true
cd /var/lib/dpkg/info
sudo sed -i 's|JAVA_VERSION=8u151|JAVA_VERSION=8u162|' oracle-java8-installer.*
sudo sed -i 's|PARTNER_URL=http://download.oracle.com/otn-pub/java/jdk/8u151-b12/e758a0de34e24606bca991d704f6dcbf/|PARTNER_URL=http://download.oracle.com/otn-pub/java/jdk/8u162-b12/0da788060d494f5095bf8624735fa2f1/|' oracle-java8-installer.*
sudo sed -i 's|SHA256SUM_TGZ="c78200ce409367b296ec39be4427f020e2c585470c4eed01021feada576f027f"|SHA256SUM_TGZ="68ec82d47fd9c2b8eb84225b6db398a72008285fafc98631b1ff8d2229680257"|' oracle-java8-installer.*
sudo sed -i 's|J_DIR=jdk1.8.0_151|J_DIR=jdk1.8.0_162|' oracle-java8-installer.*
apt-get install oracle-java8-installer oracle-java8-set-default -y

最初的解决方案发布于此:https://ubuntuforums.org/showthread.php?t=2374686&page=4&p=13731177#post13731177