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


java – 未安装JDK 8-找不到错误404:

, ,

问题描述

从昨天开始,我一直试图在我的Ubuntu计算机上安装JDK8,但是它一直在失败。

我一直在尝试运行命令:

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

但是我无法继续,因为在运行命令sudo apt-get install oracle-java8-installer时,我得到的只是:

...
Connecting to download.oracle.com (download.oracle.com)|23.215.130.99|:80... connected.
HTTP request sent, awaiting response... 404 Not Found
2017-10-18 11:07:34 ERROR 404: Not Found.

download failed
Oracle JDK 8 is NOT installed.
dpkg: error processing package oracle-java8-installer (--configure):
 subprocess installed post-installation script returned error exit status 1
...

我的安装程序是64位Ubuntu 14.04。

最佳办法

经过大量搜索之后,我在the Ubuntu forum上找到了答案。

基本上,问题似乎是存在一个新版本的java,并且未更新安装程序以引用它。

如果您的计算机是带有AMD64处理器的Linux x64,则需要最新的Java8版本,并且以前安装的版本是8u212,可以通过运行以下命令轻松地解决此问题(原始版本的信用转到g1zmo2):

cd /var/lib/dpkg/info
sudo sed -i 's|JAVA_VERSION=8u212|JAVA_VERSION=8u221|' oracle-java8-installer.*
sudo sed -i 's|PARTNER_URL=https://download.oracle.com/otn/java/jdk/8u212-b10/59066701cf1a433da9770636fbc4c9aa/|PARTNER_URL=https://download.oracle.com/otn/java/jdk/8u221-b11/230deb18db3e4014bb8e3e8324f81b43/|' oracle-java8-installer.*
sudo sed -i 's|SHA256SUM_TGZ=.*|SHA256SUM_TGZ="15ad4f7260d2416ac1558341d9d0a0ec5b83904e4ac4a22c8a3242e4e217649b"|' oracle-java8-installer.*
sudo sed -i 's|J_DIR=jdk1.8.0_212|J_DIR=jdk1.8.0_2221|' oracle-java8-installer.*

然后像通常那样运行JDK 8安装程序命令=):

sudo apt-get update
sudo apt-get install oracle-java8-installer
sudo apt-get install oracle-java8-set-default

如果您的计算机不是Linux x64 AMD64,则以前的版本不是8u212,或者您正在寻找Java 9,那么,您很幸运。今天是您将学习根据自己的需要修复Java安装程序的一天。

出于本教程的目的,我们假定您需要Java 8u181,并且您以前已经安装了Java 8u171(因为这就是我所拥有的)。

首先,我需要您转到Java的JDK下载页面(对于Java8,go here,单击”Downloads” tab,然后单击“ Java SE 8u181” link)。

现在,根据您的计算机查找所需的JDK版本。就我而言,我的机器在64位Ubuntu 14.04上运行,因此我需要“ Linux x64”。

复制将您转到需要下载的链接。不要忘记接受许可协议。在我的情况下(Linux x64),我需要:http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.tar.gz

就本教程而言,我们仅需要链接的路径:http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/。保持安全;我们稍后再用。

现在,在页面和click it中查找校验和链接。

这应该带您到纯HTML表页面。只需寻找适合您机器的sha256

同样,我的机器是“ Linux x64”,因此我需要1845567095bfbfebd42ed0d09397939796d05456290fb20a83c476ba09f991d3,如图所示。复制值,并确保其安全;我们以后也会需要它。

现在,在计算机上打开一个终端,然后输入Java安装程序文件所在的文件夹:

cd /var/lib/dpkg/info

太好了,现在执行以下命令:

sudo grep --color -P "JAVA_VERSION=[a-z0-9]+" oracle-java8-installer.config

输出应如下所示:

这告诉我们安装程序配置为要安装的Java版本。因此,要轻松更改这些值,我们将运行以下内容:

sudo sed -i 's|JAVA_VERSION=<INSTALLER CURRENT JAVA VERSION HERE>|JAVA_VERSION=<NEW VERSION HERE>|' oracle-java8-installer.*

对于我们的情况,我们正在从8u171升级到8u181,因此我们将执行:

sudo sed -i 's|JAVA_VERSION=8u171|JAVA_VERSION=8u181|' oracle-java8-installer.*

好的,现在我们需要更新下载网址。

sudo grep --color -P "PARTNER_URL=[^ ]+" oracle-java8-installer.config

要更新它,我们应该执行如下命令:

sudo sed -i 's|PARTNER_URL=<INSTALLER CURRENT JAVA URL HERE>|PARTNER_URL=<NEW URL HERE>|' oracle-java8-installer.*

还记得我刚告诉过您保存的网址吗?好吧,我们现在需要它。将其作为您的新网址,如下所示:

sudo sed -i 's|PARTNER_URL=http://download.oracle.com/otn-pub/java/jdk/8u171-b11/512cd62ec5174c3487ac17c61aaa89e8/|PARTNER_URL=http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/|' oracle-java8-installer.*

之后,我们需要更新校验和。因此,请执行以下命令:

sudo grep --color -P '[^#]SHA256SUM_TGZ="[^"]+"' oracle-java8-installer.config

这会打印出几个不同的SHA256:

请注意,它们都是不同的。一秒钟后,我们会再讲。因此,要更新SHA256,我们需要执行以下命令:

sudo sed -i 's|SHA256SUM_TGZ="<INSTALLER CURRENT JAVA HASH HERE>"|SHA256SUM_TGZ="<NEW JAVA HASH>"|' oracle-java8-installer.*

但是,我们如何知道要替换的当前Java哈希值呢?好吧,我们需要找出处理器的架构:

dpkg --print-architecture

就我而言,这将输出amd64。这意味着我应该抓住第二个链接。我怎么知道好吧,我阅读了源代码(sudo gedit oracle-java8-installer.config),因此请相信我:

  • 如果您的体系结构是i386i586i686,请抓住第一个。

  • 如果是amd64,请抓住第二个。

  • 如果是armv7larmv6l,请抓住第三个。

  • 如果是armv8larm64aarch64,请抓住第四个。

  • 如果以上都不是,那么您真不走运。

因此,由于我的名字是amd64,使用从Java网站获得的新哈希值,我将执行:

sudo sed -i 's|SHA256SUM_TGZ="b6dd2837efaaec4109b36cfbb94a774db100029f98b0d78be68c27bec0275982"|SHA256SUM_TGZ="1845567095bfbfebd42ed0d09397939796d05456290fb20a83c476ba09f991d3"|' oracle-java8-installer.*

最后,我们需要修改安装程序的JDK目录名称,因此执行此操作以找到当前目录:

sudo grep --color -P "J_DIR=[^ ]+" oracle-java8-installer.config

在我的情况下,此打印:

因此,我们将执行以下操作:

sudo sed -i 's|J_DIR=<INSTALLER CURRENT JDK VERSION HERE>|J_DIR=<NEW JDK VERSION>|' oracle-java8-installer.*

作为当前版本jdk1.8.0_171,我执行:

sudo sed -i 's|J_DIR=jdk1.8.0_171|J_DIR=jdk1.8.0_181|' oracle-java8-installer.*

而且…就是这样。我们已经准备好调用Java安装程序了。 (phe …这花了我一开始想的时间更长)。

次佳办法

感谢cavpollo对JDK 8u141的回答。

我将修复JDK 8u151-1〜webupd8〜0(改用JDK 8i162):

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.*

第三种办法

甲骨文从8u181迁移到8u191,今天就实现这一目标。按照@cavpollo的步骤进行操作,并使其适用于我的东西,这里是181至191的修复程序,以防万一有人需要它:

cd /var/lib/dpkg/info
sudo sed -i 's|JAVA_VERSION=8u181|JAVA_VERSION=8u191|' oracle-java8-installer.*
sudo sed -i 's|PARTNER_URL=http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/|PARTNER_URL=http://download.oracle.com/otn-pub/java/jdk/8u191-b12/2787e4a523244c269598db4e85c51e0c/|' oracle-java8-installer.*
sudo sed -i 's|SHA256SUM_TGZ="1845567095bfbfebd42ed0d09397939796d05456290fb20a83c476ba09f991d3"|SHA256SUM_TGZ="53c29507e2405a7ffdbba627e6d64856089b094867479edc5ede4105c1da0d65"|' oracle-java8-installer.*
sudo sed -i 's|J_DIR=jdk1.8.0_181|J_DIR=jdk1.8.0_191|' oracle-java8-installer.*

第四种办法

以下是我对Ubuntu Mate 16.04 x64的解决方法:

wget --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u152-b16/aa0333dd3019491ca4f6ddbe78cdb6d0/jdk-8u152-linux-x64.tar.gz

mkdir /opt/jdk

sudo tar -zxf jdk-8u152-linux-x64.tar.gz -C /opt/jdk

update-alternatives --install /usr/bin/java java /opt/jdk/jdk1.8.0_152/bin/java 100

update-alternatives --install /usr/bin/javac javac /opt/jdk/jdk1.8.0_152/bin/javac 100

记入digital ocean进行标题调整。

第五种办法

由于几天前,由于新的Java版本,此解决方法已过时。而是使用以下替换:

sed -i 's|JAVA_VERSION=8u151|JAVA_VERSION=8u162|' oracle-java8-installer.*
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.*
sed -i 's|SHA256SUM_TGZ="c78200ce409367b296ec39be4427f020e2c585470c4eed01021feada576f027f"|SHA256SUM_TGZ="68ec82d47fd9c2b8eb84225b6db398a72008285fafc98631b1ff8d2229680257"|' oracle-java8-installer.*
sed -i 's|J_DIR=jdk1.8.0_151|J_DIR=jdk1.8.0_162|' oracle-java8-installer.*

第六种办法

对于2019年4月16日所做的更新更改,对于AMD64上的Linux x64从8u2018u211的情况,请添加以下内容:

cd /var/lib/dpkg/info
sudo sed -i 's|JAVA_VERSION=8u201|JAVA_VERSION=8u211|' oracle-java8-installer.*
sudo sed -i 's|PARTNER_URL=http://download.oracle.com/otn-pub/java/jdk/8u201-b09/42970487e3af4f5aa5bca3f542482c60/|PARTNER_URL=https://download.oracle.com/otn/java/jdk/8u211-b12/478a62b7d4e34b78b671c754eaaf38ab/|' oracle-java8-installer.*
sudo sed -i 's|SHA256SUM_TGZ="cb700cc0ac3ddc728a567c350881ce7e25118eaf7ca97ca9705d4580c506e370"|SHA256SUM_TGZ="c0b7e45330c3f79750c89de6ee0d949ed4af946849592154874d22abc9c4668d"|' oracle-java8-installer.*
sudo sed -i 's|J_DIR=jdk1.8.0_201|J_DIR=jdk1.8.0_211|' oracle-java8-installer.*

就我而言,我不需要使用sudo,但是为了与此处的其他响应保持一致,我将其保留。

感谢@cavpollo

第七种办法

这是针对Java 8u181的,因为8u171不再起作用:

cd /var/lib/dpkg/info
sed -i 's|JAVA_VERSION=8u171|JAVA_VERSION=8u181|' oracle-java8-installer.*
sed -i 's|J_DIR=jdk1.8.0_171|J_DIR=jdk1.8.0_181|' oracle-java8-installer.*
sed -i 's|PARTNER_URL=http://download.oracle.com/otn-pub/java/jdk/8u171-b11/512cd62ec5174c3487ac17c61aaa89e8/|PARTNER_URL=http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/|' oracle-java8-installer.*
sed -i 's|SHA256SUM_TGZ="b6dd2837efaaec4109b36cfbb94a774db100029f98b0d78be68c27bec0275982"|SHA256SUM_TGZ="1845567095bfbfebd42ed0d09397939796d05456290fb20a83c476ba09f991d3"|' oracle-java8-installer.*

第八种办法

以及较新的版本:

cd /var/lib/dpkg/info
sudo sed -i 's|JAVA_VERSION=8u161|JAVA_VERSION=8u171|' oracle-java8-installer.*
sudo sed -i 's|PARTNER_URL=http://download.oracle.com/otn-pub/java/jdk/8u161-b12/2f38c3b165be4555a1fa6e98c45e0808/|PARTNER_URL=http://download.oracle.com/otn-pub/java/jdk/8u171-b11/512cd62ec5174c3487ac17c61aaa89e8/|' oracle-java8-installer.*
sudo sed -i 's|SHA256SUM_TGZ="6dbc56a0e3310b69e91bb64db63a485bd7b6a8083f08e48047276380a0e2021e"|SHA256SUM_TGZ="b6dd2837efaaec4109b36cfbb94a774db100029f98b0d78be68c27bec0275982"|' oracle-java8-installer.*
sudo sed -i 's|J_DIR=jdk1.8.0_161|J_DIR=jdk1.8.0_171|' oracle-java8-installer.*

参考资料

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