通过wget下载Linux上的Java JDK会显示许可证页面

当我试图从Oracle下载Java时,我最终下载了一个页面,告诉我需要同意OTN许可条款。

对不起!

为了从Oracle技术网络下载产品,您必须同意OTN许可条款。

请务必……

  • 你的浏览器已经启用了“cookies”和JavaScript。
  • 您点击了希望下载的产品的“接受许可”。
  • 在接受许可后的30分钟内尝试下载。

如何下载及安装Java?

529052 次浏览

甲骨文在下载链接上放置了一个防止cookie,迫使你同意这些条款,尽管使用Java的许可协议明确规定,只要使用Java,你就“同意”了许可。

Oracle想要的方法是你下载它的时候有一个协议。在此之后,可以针对特定的Linux修改此脚本

#!/bin/bash
#Author: Yucca Nel http://thejarbar.org
#Will restart system
#Modify these variables as needed...
tempWork=/tmp/work
locBin=/usr/local/bin
javaUsrLib=/usr/lib/jvm


sudo mkdir -p $javaUsrLib
mkdir -p $tempWork
cd $tempWork


#Extract the download
tar -zxvf $downloadDir/jdk*tar.gz


#Move it to where it can be found...


sudo mv -f $tempWork/jdk* $javaUsrLib/


sudo ln -f -s $javaUsrLib/jdk1/bin/* /usr/bin/


#Update this line to reflect versions of JDK...
export JAVA_HOME="$javaUsrLib/jdk1.7.0_03"
#Extract the download
tar -zxvf $tempWork/*


#Move it to where it can be found...


sudo mv -f $tempWork/jdk1* $javaUsrLib/


sudo ln -f -s $javaUsrLib/jdk1*/bin/* /usr/bin/
sudo rm -rf $tempWork
#Update this line to reflect newer versions of JDK...
export JAVA_HOME="$javaUsrLib/jdk1.7.0_03"


if ! grep "JAVA_HOME=$javaUsrLib/jdk1.7.0_03" /etc/environment
then
echo "JAVA_HOME=$javaUsrLib/jdk1.7.0_03"| sudo tee -a /etc/environment
fi




exit 0

适用于2021年12月23日的JDK 17

wget --no-check-certificate -c --header "Cookie: oraclelicense=accept-securebackup-cookie" https://download.oracle.com/java/17/archive/jdk-17.0.1_linux-x64_bin.rpm

适用于2021年7月27日的JDK 16

wget --no-check-certificate -c --header "Cookie: oraclelicense=accept-securebackup-cookie" https://download.oracle.com/otn-pub/java/jdk/16.0.2%2B7/d4a915d82b4c4fbb9bde534da945d746/jdk-16.0.2_linux-x64_bin.rpm

适用于2020年11月5日的JDK 15

wget --no-check-certificate -c --header "Cookie: oraclelicense=accept-securebackup-cookie" https://download.oracle.com/otn-pub/java/jdk/15.0.1+9/51f4f36ad4ef43e39d0dfdbaf6549e32/jdk-15.0.1_linux-x64_bin.rpm

适用于JDK 14 (07-11-2020)

wget --no-check-certificate -c --header "Cookie: oraclelicense=accept-securebackup-cookie" https://download.oracle.com/otn-pub/java/jdk/14.0.1+7/664493ef4a6946b186ff29eb326336a2/jdk-14.0.1_linux-x64_bin.rpm -O ~/Downloads/jdk-14.0.1_linux-x64_bin.rpm

附:Alf加了这个(我):-)这个,我不知道怎么在最后评论…享受它。

更新为Oracle JDK 11

wget --no-check-certificate -c --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/11+28/55eed80b163941c8885ad9298e6d786a/jdk-11_linux-x64_bin.tar.gz

针对JDK 10.0.2更新

wget --no-check-certificate -c --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/10.0.2+13/19aef61b38124481863b1413dce1855f/jdk-10.0.2_linux-x64_bin.tar.gz

针对JDK 10.0.1更新

wget --no-check-certificate -c --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/10.0.1+10/fb4372174a714e6b8c52526dc134031e/jdk-10.0.1_linux-x64_bin.tar.gz

已更新为JDK 9 看起来你现在可以直接从java.net下载它,而不需要发送头文件

wget http://download.java.net/java/GA/jdk9/9/binaries/jdk-9+181_linux-x64_bin.tar.gz

为JDK 8u191更新

焦油广州:

wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3a%2F%2Fwww.oracle.com%2Ftechnetwork%2Fjava%2Fjavase%2Fdownloads%2Fjdk8-downloads-2133151.html; oraclelicense=accept-securebackup-cookie;" "https://download.oracle.com/otn-pub/java/jdk/8u191-b12/2787e4a523244c269598db4e85c51e0c/jdk-8u191-linux-x64.tar.gz"

转:

wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3a%2F%2Fwww.oracle.com%2Ftechnetwork%2Fjava%2Fjavase%2Fdownloads%2Fjdk8-downloads-2133151.html; oraclelicense=accept-securebackup-cookie;" "https://download.oracle.com/otn-pub/java/jdk/8u191-b12/2787e4a523244c269598db4e85c51e0c/jdk-8u191-linux-x64.rpm"

为JDK 8u131更新

转:

  wget -c --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm

焦油广州:

 wget -c --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz

使用旋度的RPM:

 curl -v -j -k -L -H "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm > jdk-8u112-linux-x64.rpm

在上述所有情况下,将'i586'替换为'x64'以下载32位版本。

  • # EYZ0→垃圾饼干
  • # EYZ0→忽略证书
  • # EYZ0→遵循重定向
  • # EYZ0→头

curl可以用来代替wget

更新JDK 7u79

焦油广州:

wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.tar.gz

使用旋度的RPM:

curl -v -j -k -L -H "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.rpm > jdk-7u79-linux-x64.rpm

同样,请确保您为正在下载的版本指定了正确的URL。您可以在这里找到URL: Oracle JDK下载站点

2012年6月9日的原稿

如果您希望使用wget从命令行下载Oracle JDK,有一种变通方法。执行命令wget:

wget --no-cookies --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com" "http://download.oracle.com/otn-pub/java/jdk/7/jdk-7-linux-x64.tar.gz"

请确保将下载链接替换为您正在下载的版本的正确链接。

这适用于JDK 6,你只需要将下载url替换为最新版本。

wget --no-cookies --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2Ftechnetwork%2Fjava%2Fjavase%2Fdownloads%2Fjdk6-downloads-1637591.html;" http://download.oracle.com/otn-pub/java/jdk/6u33-b03/jdk-6u33-linux-x64.bin

从命令行下载Java一直很麻烦。我最近一直在做的是使用FireFox(其他浏览器也可以)在我的笔记本电脑上开始下载,暂停它(在下载窗口内),使用上下文菜单中显示的“复制下载链接”菜单项来下载文件。然后可以在Linux机器上使用该URL下载相同的文件。我希望URL的生存时间很短。丑陋,但总体上是成功的。

我知道Oracle竭尽所能让他们的Java运行时和Java SDK变得尽可能的难。

下面是一些命令行爱好者的指南。

对于Debian类系统(在Debian squeeze和Ubuntu 12.x+上测试)

su -
echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu precise main" | tee -a /etc/apt/sources.list
echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu precise main" | tee -a /etc/apt/sources.list
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EEA14886
apt-get update
apt-get install --yes oracle-java7-installer
exit

注:如果你知道一个更好或更简单的方法添加评论,我会更新指南。

最新的测试,

wget——no-cookies——no-check-certificate——header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com" "https://edelivery.oracle.com/otn-pub/java/jdk/7u25-b15/jdk-7u25-linux-x64.tar.gz"

如果您关心绝对的安全性,请注意禁用证书检查。:)

为什么不点击下载从您的浏览器,然后复制&粘贴下载时的链接,例如:

wget http://download.oracle.com/otn-pub/java/jdk/7u40-b43/jdk-7u40-linux-x64.tar.gz?AuthParam=1380225131_dd70d2038c57a4729d8c0226684xxxx

在oracle中接受术语后,您可以通过查看浏览器的network选项卡找到链接并点击下载。Chrome浏览器下的F12。Firefox中的Firebug。

sudo wget --no-check-certificate --no-cookies --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com" "http://download.oracle.com/otn-pub/java/jdk/7u45-b18/jdk-7u45-linux-x64.rpm"

以上所有内容似乎都假设您知道最新Java RPM的URL……

Oracle提供了到每个Java版本最新的更新的持久链接 https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=397248601136938&id=1414485.1 -尽管您需要创建/登录到Oracle支持帐户。*否则,您只能访问每个Java版本的最后一次“公开”更新,例如1.6_u45(2013年3月;最新更新是u65, 2013年10月)*

一旦你知道持久链接,你应该能够解决它到真正的下载; 以下是我的工作,虽然我还不知道“aru”引用是否改变
ME=<myOracleID>
PW=<myOraclePW>
PATCH_FILE=p13079846_17000_Linux-x86-64.zip


echo "Get real URL from the persistent link"


wget -o getrealurl.out --no-cookies --no-check-certificate --user=$ME \
--password=$PW --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com" \
https://updates.oracle.com/Orion/Services/download/$PATCH_FILE?aru=16884382&\
patch_file=$PATCH_FILE


wait    # wget appears to go into background, so "wait" waits
# until all background processes complete


REALURL=`grep "^--" getrealurl.out |tail -1 |sed -e 's/.*http/http/'`
wget -O $PATCH_FILE $REALURL
#These last steps must be done quickly, as the REALURL seems to have a short-lived
#cookie on it and I've had no success with  --keep-session-cookies etc.

试一试

wget --no-cookies --header "Cookie: s_nr=1359635827494; s_cc=true; gpw_e24=http%3A%2F%2Fwww.oracle.com%2Ftechnetwork%2Fjava%2Fjavase%2Fdownloads%2Fjdk6downloads-1902814.html; s_sq=%5B%5BB%5D%5D; gpv_p24=no%20value" http://download.oracle.com/otn-pub/java/jdk/6u45-b06/jdk-6u45-linux-x64-rpm.bin --no-check-certificate -O ./jdk-6u45-linux-x64-rpm.bin

如果你像我一样试图获得Oracle JDK 6。

来源:# EYZ0

(# EYZ0)

编辑:更新了Java 17.0.1,在2021年10月19日发布

Wget

wget -c --header "Cookie: oraclelicense=accept-securebackup-cookie" https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz

# EYZ0 < br >

  • # EYZ0

允许继续未完成的下载。

  • # EYZ0

因为2014年3月15日这个cookie是在接受许可协议之后提供给用户的,并且是访问download.oracle.com中的Java包所必需的。2012年3月27日中的前一个(也是第一个)实现使用了cookie gpw_e24=http%3A%2F%2Fwww.oracle.com[...]。这两起案件都未向公众公布。

该值不必是"accept-securebackup-cookie"。

不是必需的

  • # EYZ0

组合--no-cookies --header "Cookie: name=value"被称为"官方"Cookie支持,但在这里不是严格要求的。

旋度

curl -L -C - -b "oraclelicense=accept-securebackup-cookie" -O https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz
  • # EYZ0

旋度需要重定向通过所有镜像。

  • # EYZ0

见上图。cURL最后需要破折号(-)。

  • # EYZ0

-H / --header "Cookie: ..."相同,但也接受文件。

  • # EYZ0

需要旋度保存文件(参见[作者的比较][8]了解更多差异)。

我解决了这个问题(对于基于Debian的Linux发行版),方法是多次使用java-package制作包(对于各种架构),然后在内部分发它们。

最大的好处是这种方法总是有效的;无论甲骨文的网页变得多么疯狂。甲骨文不能再打破我的构建!

缺点是一开始需要做更多的工作。

  • 在浏览器中手动下载tar.gz文件(从而“接受”它们的条款)
  • # EYZ0运行。这将创建oracle-java8-jdk_8_amd64.deb
  • 在您的组织中分发它

对于在互联网上发布,我建议使用密码保护的apt存储库或使用对称加密提供原始包:

passphrase="Hard to crack string. Use /dev/urandom for inspiration."
gpg --batch --symmetric --force-mdc --passphrase-fd 0 \
oracle-java8-jdk_8_amd64.deb <<< "$passphrase"

当然,在互联网上提供(未加密的).deb包违反了您与Oracle的许可协议,该协议规定:

... Oracle授予您…许可证……为了运行程序的唯一目的而在内部复制和使用完整且未经修改的软件”

在接收端,如果你有密码保护的apt回购,你所需要做的就是apt-get install它。如果你有原始包,下载、解密并dpkg -i它们。效果好极了!

我已经为我的gentoo盒子制作了一个jdk-download脚本(特定于tar.gz)。不需要像其他类似的脚本那样更新,尝试“强制”下载您想要的任何版本的最新版本。

使用

jdk-download< <version> <platform> [<build>]


* <version> - Something like "8u40"
* <platform> - Usually i586 or x64
* <build> - The internal build number used by oracle, to avoid guessing and trying to download starting from 99 to 1 (build 0, really?!!)

< a href = " http://bonfab.io/?p=10" rel="nofollow">博客文章

Source on bitbucket

对于需要JCE8的用户,也可以下载JCE8。

curl -L -C - -b "oraclelicense=accept-securebackup-cookie" -O http://download.oracle.com/otn-pub/java/jce/8/jce_policy-8.zip

wget --no-check-certificate -c --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jce/8/jce_policy-8.zip

正如已经在这里发布的: # EYZ0 < / p >

更新JDK 8 Update 121

由于Oracle在其下载链接中插入了一些md5hash,因此不能自动组装命令行下载链接。

所以我修补了一些讨厌的bash命令行来获得最新的jdk下载链接,下载它并直接通过rpm安装。 对于所有感兴趣的人:

wget -q http://www.oracle.com/technetwork/java/javase/downloads/index.html -O ./index.htmlgrep - eoi ']+>' index.html | grep - eoi '/technetwork/java/javase/downloads/jdk8-downloads-[0-9]+.html' | (head -n 1) | awk '{print "http://www.oracle.com"$1}' | xargs wget——no-cookies——header "Cookie: gpw_e24=xxx;oraclelicense = accept-securebackup-cookie;”-O index.html -q &&grep - eoi '"filepath":"[^"]+jdk-8u[0-9]+-linux-x64.rpm"' index.html | grep - eoi 'http:[^"]+' | xargs wget——no-cookies——header "Cookie: gpw_e24=xxx;oraclelicense = accept-securebackup-cookie;”-q -O ./jdk8。rpm,,Sudo RPM -i ./jdk8.rpm

大胆的一部分应该替换为您喜欢的包装。

针对JDK 8u171 RPM进行更新

wget --no-check-certificate -c --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u171-b11/512cd62ec5174c3487ac17c61aaa89e8/jdk-8u171-linux-x64.rpm

过时的链接

<年代> # EYZ0

wget --no-check-certificate -c --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u161-b12/2f38c3b165be4555a1fa6e98c45e0808/jdk-8u161-linux-x64.rpm

针对JDK 8u152 RPM更新

wget --no-check-certificate -c --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u152-b16/aa0333dd3019491ca4f6ddbe78cdb6d0/jdk-8u152-linux-x64.rpm

针对JDK 8u144 RPM更新

wget --no-check-certificate -c --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-linux-x64.rpm

针对JDK 8u131 RPM更新

wget --no-check-certificate -c --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm

针对JDK 8u121 RPM更新

wget --no-check-certificate -c --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u121-b13/e9e7ea248e2c4826b92b3f075a80e441/jdk-8u121-linux-x64.rpm

< / s >

截至2017-04-25,公认的答案对我不适用。然而,简单的解决方案是使用-b标志而不是--header选项。

例如,要获取jdk-1.8_131:

version='8u131'; wget -H -O jdk-$version-linux-x64.tar.gz --no-check-certificate --no-cookies -b "oraclelicense=a" http://download.oracle.com/otn-pub/java/jdk/$version-b11/jdk-$version-linux-x64.tar.gz

这将在后台执行,并将输出写入wget-log

这对我JDK8有用

wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2F%www.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm"

oracle-java-download是GitHub上的一个项目,允许您为JDK 8和JDK 9创建下载链接,您可以使用这些链接进行进一步处理,例如在自动构建或部署过程中。

它需要Linux、Docker和JDK >= 8才能运行。

Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F;oraclelicense = accept-securebackup-cookie # EYZ0”

上下文

我最近也遇到了同样的问题,尽管本页上的评论和一些 其他人提供了有用的提示——我认为把我为那些可能需要进一步帮助的人解决问题所采取的步骤记录下来会很好

系统细节

我在AWS上按照PNDA安装指南的步骤安装PNDA:

https://github.com/pndaproject/pnda-guide/blob/develop/provisioning/aws/PREPARE.md

我在AWS云上使用ubuntu 14.04[免费层合格],并且正在从64位windows8.1笔记本电脑上运行代码。使用PUTTY连接服务器实例。我把pnda代码从https://github.com/pndaproject/pnda克隆到了ubuntu实例。

< >强重要的注意 请注意,如果你计划在AWS上使用Ubuntu实例,请确保它只支持14.04。如果您使用版本16,则无法正常工作。我是吃了不少苦头才学会的!< / p >

解决步骤

那些曾经遇到过这里讨论的错误的人会知道—镜像创建文件涉及以下步骤—

1)执行脚本create_mirror.sh [ sudo su -s ./create_mirror.sh ],运行全量镜像创建进程

2)这个脚本依次调用各种其他脚本-其中一个是create_mirror_misc.sh;这个脚本引用了pnda-static-file-dependencies.txt,它有一个要下载的文件列表。

3)在pnda-static-file-dependencies.txt的第一行是一个从http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz oraclelicense=accept-securebackup-cookie下载jdk-8u131-linux-x64.tar.gz文件的引用;在这一点上,我的脚本失败的消息Failed to download http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz after 3 retries

4)我浏览到http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz页面,发现以下错误消息显示为**In order to download products from Oracle Technology Network you must agree to the OTN license terms**

5)为了解决这个问题,我对pnda-static-file-dependencies.txt;我添加了—无检查证书—无cookie来绕过许可条款协议条件

6)所以修改后的代码看起来像- http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz --no-check-certificate --no-cookies oraclelicense=accept-securebackup-cookie

我希望这对你有帮助。

我没有为每个新的Java版本使用一个新的链接或更改现有脚本,而是寻找一种更通用的方式来自动下载所需的Java包,然后通过yum localinstall ${JAVA_ENVIRONMENT}-${JAVA_VERSION}-linux-x64.rpm进行安装。

我使用了一种类似于手动/用户操作的简单方法来查找包并下载它。我也非常确定,通过使用其他工具,如egrepawk等,人们会找到一种更优雅的方式来完成它。,所以这里留一个例子:

#!/bin/bash


### Proxy settings
# If there is a company proxy


PROXY="my.proxy.local:8080"
PROXY_TYPE="--proxy-ntlm" # or leave empty with ""
USER="user"
PASS='pass'


### Find out the links to JRE and JDK
# To do so, got to the page http://www.oracle.com/technetwork/java/javase/downloads/


BASE_URL="technetwork/java/javase/downloads"


# Put the whole page into a single string/line


BASE_URL_OUTPUT="$(curl -s -k ${PROXY_TYPE} -x "http://${USER}:${PASS}@${PROXY}" -L0 http://www.oracle.com/${BASE_URL}/)"


# Define the environments to download


JAVA_ENVIRONMENTS=("JRE" "JDK") # ! yet "SERVER-JRE"


for JAVA_ENVIRONMENT in "${JAVA_ENVIRONMENTS[@]}"
do


echo
echo "JAVA_ENVIRONMENT="$JAVA_ENVIRONMENT
echo


for (( JAVA_BASE_VERSION = 8; JAVA_BASE_VERSION <= 10; JAVA_BASE_VERSION += 2 ))
do


echo "JAVA_BASE_VERSION="$JAVA_BASE_VERSION


### "Read the page"
# and follow the links for the package interested in


DOWNLOAD_SITE="$(echo $BASE_URL_OUTPUT | grep -m 1 -io "${JAVA_ENVIRONMENT}${JAVA_BASE_VERSION}-downloads-[0-9]*.html" -- | tail -1)"
echo "DOWNLOAD_SITE="$DOWNLOAD_SITE


### Gather the necessary download links
# To do so, following the link to the download site
# reading and accept the license
#
# ... the greedy regular expression is to address the different syntax of the links
# and already prepared for OR .gz files


DOWNLOAD_LINK_OUTPUT="$(curl -s -k ${PROXY_TYPE} -x "http://${USER}:${PASS}@${PROXY}" -L -j -H "Cookie: oraclelicense=accept-securebackup-cookie" http://www.oracle.com/${BASE_URL}/${DOWNLOAD_SITE} |  grep -io "filepath.*${JAVA_ENVIRONMENT}-[${JAVA_BASE_VERSION}].*linux[-_]x64[._].*\(rpm\)" -- | cut -d '"' -f 3 | tail -1)"


# and echo out the link


echo "DOWNLOAD_LINK_OUTPUT="$DOWNLOAD_LINK_OUTPUT


done


done

由于下载链接现已可用,您可以进一步使用wgetcurl

你应该试试:

wget \
--no-cookies \
--header "Cookie: oraclelicense=accept-securebackup-cookie" \
http://download.oracle.com/otn-pub/java/jdk/8u172-b11/a58eab1ec242421181065cdc37240b08/jdk-8u172-linux-x64.tar.gz \
-O java.tar.gz

从命令行安装不同的JDK有一个很好的替代方案…使用https://sdkman.io/有很多供应商

sdk install java 19.0.1-oracle

此命令现已下载jdk8 TGZ包(2018-09-06),祝你好运!

wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u141-b15/336fa29ff2bb4ef291e347e091f7f4a7/jdk-8u141-linux-x64.tar.gz"

下载JDK 8u221

$ wget -c --content-disposition "https://javadl.oracle.com/webapps/download/AutoDL?BundleId=239835_230deb18db3e4014bb8e3e8324f81b43"
$ old=$(ls -hat | grep jre | head -n1)
$ mv $old $(echo $old | awk -F"?" '{print $1}')

我的博客044-wget下载jdk8u221

这是因为当你在浏览器的下载页面上点击“接受”按钮时,网页会保存一个cookie,在让你下载文件之前,它会用来检查你的同意。当尝试使用wget从命令行下载文件时出现了问题,这是因为wget下载文件的请求中没有发送cookie信息,因此从文件服务器的角度来看,您是一个尚未接受许可协议的全新用户。

一种解决方案是使用wget实用程序的——header选项发送cookie信息(如上面的其他答案所示)。理想情况下,如果某些内容受到保护,则可以使用wget提供的各种会话管理选项。然而,对于这个特定的问题,(目前)通过发送下载请求的Cookie报头来解决。

以下是如何自己获得命令。 这适用于任何版本:

  1. 访问包页面:https://www.oracle.com/java/technologies/javase-jdk11-downloads.html
  2. 单击所需软件包的下载链接
  3. 勾选你已经“审阅并接受……”的复选框。
  4. 右击,从按钮复制链接地址
  5. 粘贴到文本编辑器中,然后复制'nexturl='之后的所有内容,以'https://' '开头
  6. 更新这个命令中的下载URL,你应该很好:

    wget——no-check-certificate -c——header "Cookie: oracelicense =accept-securebackup-cookie" https://download.oracle.com/otn/java/jdk/11.0.6+8/90eb79fb590d45c8971362673c5ab495/jdk-11.0.6_linux-x64_bin.tar.gz

    . wget——no-check-certificate -c——header "Cookie: oracelicense =accept-securebackup-cookie
为了进一步解释wget,——no-check-certificate应该足够清楚,但是通过使用浏览器中的Developer Tools Network选项卡可以发现头部内容(对于任何调用)。开发人员工具功能强大,非常值得花时间学习。 享受。< / p >

@eric回答对我有用,你需要接受你设置的命令中的条款 即< / p >

"Cookie: oraclelicense=accept-securebackup-cookie"

最后的命令是这样的

wget -c --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz

您可以通过将8u131更改为8uXXX来决定更新版本。只要它在回购中可用。

这个问题将从Oracle JDK 17开始解决

https://www.oracle.com/java/technologies/jdk-script-friendly-urls/

Oracle JDK 17的最新版本可以从命令行下载,也可以通过使用下载url自动在脚本和dockerfile中下载,该下载url将提供当时的更新版本。

你可以使用-

wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz

格式以获取最新的17个版本