从昨天开始,我一直试图在我的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位Ubuntu14.04.
发布于 2017-10-18 17:26:53
在谷歌搜索了很多之后,我在Ubuntu论坛上找到了一个答案。
基本上,问题似乎是有一个新版本的java,而安装程序并没有更新来引用它。
如果您的计算机是Linux x64,并带有AMD64处理器,则需要最新的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如果您的机器是而不是a Linux x64 AMD64,那么您以前的版本不是8u212或--您要查找的是Java9,那么,您很幸运。今天,您将学习如何根据自己的需要修复java安装程序。
为了本教程的目的,我们假设您需要Java 8u181,并且您以前已经安装了Java8u171(因为我已经安装了Java 8u171 )。
首先,我需要您转到Java的JDK下载页面(对于Java8,到这里去,单击“制表符”,然后单击“JavaSE8u181”链接)。
现在,根据您的机器查找所需的JDK版本。在我的例子中,我的机器运行在Ubuntu14.04 64位上,所以我需要"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/。把它保管好,我们以后再需要它。
现在,在页面和点击它中查找校验和链接。

这应该会带您到一个普通的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.*还记得我刚开始告诉你要保存的那个URL吗?我们现在就需要它。把它作为你的新网址,就像这样:
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),所以请相信我:
i386、i586或i686,请获取第一个。amd64,拿第二个。armv7l或armv6l,就拿第三个。armv8l,arm64或aarch64,拿第四个。因此,由于我的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安装程序了。(哎呀.这需要花更长的时间来打字,我最初是这么想的)。
发布于 2018-01-18 10:29:34
感谢cavpollo对JDK 8u141的回答。
我将修复JDK8u151-1~webupd8~0(改用JDK8i162):
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.*发布于 2018-10-17 03:09:12
今天,甲骨文从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.*https://stackoverflow.com/questions/46815897
复制相似问题