当我尝试从 Oracle 下载 Java 时,我最终下载了一个页面,告诉我我需要同意 OTN 许可条款。
对不起!
要从 Oracle 技术网下载产品,您必须同意 OTN 许可条款。
请确保...
- 您的浏览器启用了“cookies”和 JavaScript。
- 您为要下载的产品单击了“接受许可”。
- 您在接受许可后 30 分钟内尝试下载。
如何下载和安装 Java?
当我尝试从 Oracle 下载 Java 时,我最终下载了一个页面,告诉我我需要同意 OTN 许可条款。
对不起!
要从 Oracle 技术网下载产品,您必须同意 OTN 许可条款。
请确保...
- 您的浏览器启用了“cookies”和 JavaScript。
- 您为要下载的产品单击了“接受许可”。
- 您在接受许可后 30 分钟内尝试下载。
如何下载和安装 Java?
适用于 JDK 17 的 2021 年 12 月 23 日
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
PS:阿尔夫添加了这个(我):-)这个,我不知道如何在最后发表评论......享受它。
针对 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
使用 curl 的 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 位版本。
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
使用 curl 的 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 日的原始答案
如果您希望使用 命令行从命令行下载 Oracle JDK wget
,则有一种解决方法。运行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"
请务必将下载链接替换为您正在下载的版本的正确链接。
(Irani更新了我的回答,但在这里澄清一下。)
wget -c --header "Cookie: oraclelicense=accept-securebackup-cookie" https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz
有关更多信息,请参阅oracle.com中的下载。
-c / --continue
允许继续未完成的下载。
--header "Cookie: oraclelicense=accept-securebackup-cookie"
自2014 年 3 月 15 日起,此 cookie 在接受许可协议后提供给用户,并且是访问download.oracle.com中的 Java 包所必需的。2012 年 3 月 27 日的前一次(也是第一次)实施使用了 cookie gpw_e24=http%3A%2F%2Fwww.oracle.com[...]
。这两起案件均未向公众公布。
该值不必是“ accept-securebackup-cookie
”。
--no-cookies
该组合--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
-L / --location
cURL需要通过所有镜像重定向。
-C / --continue-at -
往上看。cURL-
最后需要破折号 ( )。
-b / --cookie "oraclelicense=accept-securebackup-cookie"
与 相同-H / --header "Cookie: ..."
,但也接受文件。
-O
cURL需要用于保存文件(有关更多差异,请参见 [作者的比较][8])。
从命令行下载Java一直很麻烦。我最近一直在做的是使用 FireFox(其他浏览器可能工作)在我的笔记本电脑上开始下载,暂停它(在下载窗口中),使用上下文菜单中显示的“复制下载链接”菜单项下载文件。然后可以在 Linux 机器上使用此 URL 来下载相同的文件。我希望 URL 的生存时间很短。丑陋,但总体上是成功的。
针对 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
以下链接已过时
针对 JDK 8u161 RPM 更新
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
我知道甲骨文尽一切可能使他们的 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
注意:如果您知道更好或更简单的方法添加评论,我将更新指南。
Java SE 开发工具包 12.0.2
广州
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" https://download.oracle.com/otn-pub/java/jdk/12.0.2+10/e482c34c86bd4bf8b56c0b35558996b9/jdk-12.0.2_linux-x64_bin.tar.gz
最新测试,
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 "
请注意,如果您关心绝对安全性,则禁用证书检查。:)
Oracle 在下载链接上放置了一个预防 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
对于那些也需要 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
这适用于 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
这个命令现在可以下载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"
我没有为每个新的 Java 版本使用新链接或更改现有脚本,而是寻找一种更通用的方法来自动下载所需的 Java 包并稍后通过yum localinstall ${JAVA_ENVIRONMENT}-${JAVA_VERSION}-linux-x64.rpm
.
我使用了一种类似于手动/用户操作的微不足道的方法来查找包并下载它。我也很确定人们会通过使用其他工具(如egrep
,awk
等)找到一种更优雅的方式来实现这一点,所以在这里作为示例:
#!/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
由于下载链接现在可用,因此可以继续使用wget
或curl
。
以上所有内容似乎都假设您知道最新 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.
正如这里已经发布的那样: https ://stackoverflow.com/a/41718895/4370196
由于 Oracle 在其下载链接中插入了一些 md5hash,因此无法自动为命令行组装下载链接。
所以我修改了一些讨厌的 bash 命令行来获取最新的 jdk 下载链接,下载它并直接通过 rpm 安装。对于所有感兴趣的人:
wget -q http://www.oracle.com/technetwork/java/javase/downloads/index.html -O ./index.html && grep -Eoi ']+>' index.html | grep -Eoi '/technetwork/java/javase/downloads/jdk8-downloads-[0-9]+.html' | (头-n 1)| awk '{打印" http://www.oracle.com "$1}' | xargs wget --no-cookies --header "Cookie: gpw_e24=xxx; oraclelicense=accept-securebackup-cookie;" -O index.html -q && grep -Eoi '"文件路径":"[^"]+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
粗体部分应替换为您喜欢的包装。
java-package
我通过使用几次(对于各种架构)制作软件包来解决这个问题(对于基于 Debian 的 Linux 发行版) ,然后在内部分发它们。
最大的好处是这种方法总是有效的。不管甲骨文的网页变得多么疯狂。Oracle 不能再破坏我的构建!
缺点是最初设置的工作量更大。
make-jpkg jdk-7u51-linux-x64.tar.gz
。这创造了oracle-java8-jdk_8_amd64.deb
对于通过 Internet 分发,我建议使用受密码保护的 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"
当然,在 Internet 上提供(未加密的).deb 包可能违反了您与 Oracle 的许可协议,该协议规定:
... Oracle 授予您 ... 许可 ... 以在内部复制和使用完整且未经修改的软件,其唯一目的是运行程序”
在接收端,如果你有一个受密码保护的 apt repo,你需要做的就是apt-get install
它。如果您有原始包,请下载、解密dpkg -i
它们。奇迹般有效!
截至 2017 年 4 月 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
.
wget这对我有用 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"
尝试
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。
我为我的 gentoo 盒子制作了一个 jdk 下载脚本(特定于 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?!!)
oracle-java-download是 GitHub 上的一个项目,它允许您为 JDK 8 和 JDK 9 创建下载链接,您可以将其用于进一步处理,例如在自动构建或部署过程中。
它需要 Linux、Docker 和 JDK >= 8 才能运行。
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/8u161-b12/2f38c3b165be4555a1fa6e98c45e0808/jdk-8u161-linux-x64.rpm?AuthParam=1516282527_40effcfefd78d78bce12c0a4030a1b05 ”
语境
我最近遇到了同样的问题,尽管此页面上的评论和其他一些评论提供了有用的提示 - 我认为最好记录下我为可能需要进一步帮助的人解决问题所采取的步骤。
系统详情
我按照以下位置的分步 pnda 安装指南在 AWS 上设置 PNDA:
https://github.com/pndaproject/pnda-guide/blob/develop/provisioning/aws/PREPARE.md
我在 AWS 云上使用 ubuntu 14.04 [符合免费套餐条件],并从 64 位 windows8.1 笔记本电脑上运行代码。我正在使用 PUTTY 连接到服务器实例。我 git 将 pnda 代码从https://github.com/pndaproject/pnda克隆到 ubuntu 实例。
重要说明 请注意,如果您计划在 AWS 上使用 Ubuntu 实例,请确保它仅是 14.04。如果您使用版本 16,则它不起作用。我学得很辛苦!
解决步骤
正如那些已经遇到这里讨论的错误的人所知道的那样 - 镜像创建文件涉及以下步骤 -
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 的第一行是下载 jdk-8u131-linux-x64.tar.gz 文件的参考 http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz oraclelicense=accept-securebackup-cookie
;正是在这一点上,我的脚本因消息而失败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
; 我添加了 --no-check-certificate --no-cookies 以绕过许可条款协议条件
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
我希望这是有帮助的。
你应该试试:
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 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}')
这是自己获取命令的方法。这适用于任何版本:
更新此命令中的下载 URL,您应该一切顺利:
wget --no-check-certificate -c --header "Cookie: oraclelicense=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 应该足够清楚,但是可以通过使用浏览器中的开发者工具网络选项卡发现标头内容(对于任何调用)。开发人员工具功能强大,非常值得花时间学习。享受。
这个问题将从 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 版本的格式
发生这种情况是因为当您在浏览器的下载页面上单击“接受”按钮时,该网页会保存一个 cookie,用于在让您下载文件之前检查您的协议。尝试使用 wget 从命令行下载时会出现问题,这是因为没有随 wget 请求发送的用于下载文件的 cookie 信息,因此从文件服务器的角度来看,您是一个未接受许可证的全新用户协议。
一种解决方案是使用 wget 实用程序的 --header 选项发送 cookie 信息(如上面其他答案所示)。理想情况下,如果某些内容受到保护,您将使用 wget 提供的各种会话管理选项。然而,对于这个特定问题,它(当前)通过发送Cookie
带有下载请求的标头来解决。
@eric 回答对我有用,您需要在设置的命令中接受条款,即
"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
。只要它在回购中可用。
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"
为什么不点击从浏览器下载,然后复制并粘贴下载的确切链接,例如:
wget http://download.oracle.com/otn-pub/java/jdk/7u40-b43/jdk-7u40-linux-x64.tar.gz?AuthParam=1380225131_dd70d2038c57a4729d8c0226684xxxx
您可以在接受 oracle 中的条款并单击下载后,通过查看浏览器的网络选项卡找到该链接。在 Chrome 中按 F12。火狐中的萤火虫。