当我试图从Oracle下载Java时,我最终下载了一个页面,告诉我需要同意OTN许可条款。
对不起! 为了从Oracle技术网络下载产品,您必须同意OTN许可条款。 请务必…… 你的浏览器已经启用了“cookies”和JavaScript。 您点击了希望下载的产品的“接受许可”。 在接受许可后的30分钟内尝试下载。
如何下载及安装Java?
当我试图从Oracle下载Java时,我最终下载了一个页面,告诉我需要同意OTN许可条款。
对不起! 为了从Oracle技术网络下载产品,您必须同意OTN许可条款。 请务必…… 你的浏览器已经启用了“cookies”和JavaScript。 您点击了希望下载的产品的“接受许可”。 在接受许可后的30分钟内尝试下载。
如何下载及安装Java?
当前回答
这个问题将从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个版本
其他回答
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" "https://edelivery.oracle.com/otn-pub/java/jdk/7u25-b15/jdk-7u25-linux-x64.tar.gz"
如果您关心绝对的安全性,请注意禁用证书检查。:)
上下文
我最近也遇到了同样的问题,尽管本页上的评论和一些 其他人提供了有用的提示——我认为把我为那些可能需要进一步帮助的人解决问题所采取的步骤记录下来会很好。
系统细节
我在AWS上按照PNDA安装指南的步骤安装PNDA:
https://github.com/pndaproject/pnda-guide/blob/develop/provisioning/aws/PREPARE.md
我在AWS云上使用ubuntu 14.04[免费层合格],并且正在从64位windows8.1笔记本电脑上运行代码。使用PUTTY连接服务器实例。我git从https://github.com/pndaproject/pnda克隆了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) On the very first line of the pnda-static-file-dependencies.txt is a reference to download the jdk-8u131-linux-x64.tar.gz file from http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz oraclelicense=accept-securebackup-cookie; It is at this point that my script was failing with the message 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页面,发现显示以下错误消息**为了从Oracle技术网络下载产品,您必须同意OTN许可条款**
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 oraclicense =accept-securebackup-cookie
我希望这对你有帮助。
以上所有内容似乎都假设您知道最新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.
我没有为每一个新的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。