#!/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
#!/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
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.
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?!!)
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**
25 回答
这适用于JDK 6,您只需要用最新版本替换下载URL .
我知道Oracle尽一切可能使他们的Java Runtime和Java SDK尽可能地努力 .
以下是命令行爱好者的一些指南 .
对于类似Debian的系统(在
Debian
squeeze和Ubuntu
12.x上测试)注意:如果您知道更好或更简单的方式添加评论,我将更新指南 .
oracle-java-download是GitHub上的一个项目,它允许您为JDK 8和JDK 9创建下载链接,您可以将其用于进一步处理,例如在自动构建或部署过程中 .
它需要Linux,Docker和JDK> = 8才能运行 .
Oracle在下载链接上放置了一个预防cookie,迫使您同意这些条款,即使使用Java的许可协议明确规定只使用Java,您同意许可 .
Oracle想要的方法是您通过协议下载它 . 之后,可以针对您的特定Linux修改此脚本
我没有在每个新Java版本中使用新链接或更改现有脚本,而是寻找一种更通用的方法来自动下载所需的Java包,然后通过
yum localinstall ${JAVA_ENVIRONMENT}-${JAVA_VERSION}-linux-x64.rpm
进行安装 .我使用了类似于手动/用户操作的某种简单方法来查找包并下载它 . 我也很确定通过使用其他工具如
egrep
,awk
等来找到更优雅的方法,所以请将其作为示例:由于下载链接现在可用,因此可以继续进行
wget
或curl
.所有上述内容似乎都假设您知道最新Java RPM的URL ...
Oracle提供了对每个Java版本的最新更新的持久链接,如https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=397248601136938&id=1414485.1所述 - 尽管您需要创建/登录Oracle Support帐户 . 否则,您只能访问每个Java版本的最后"public"更新,例如1.6_u45(2013年3月;最新更新为u65,2013年10月)
一旦你 know 持久链接,你应该能够解析它到真正的下载;以下对我有用,但我还不知道"aru"引用是否发生了变化 .
UPDATED FOR Oracle JDK 11
UPDATED FOR JDK 10.0.2
UPDATED FOR JDK 10.0.1
UPDATED FOR JDK 9 看起来您现在可以直接从java.net下载而无需发送标头
UPDATED FOR JDK 8u191
TAR GZ:
RPM:
UPDATED FOR JDK 8u131
RPM:
TAR GZ:
使用curl的RPM:
在上面的所有情况下,将“i586”替换为“x64”以下载32位版本 .
-j - >垃圾 Cookies
-k - >忽略证书
-L - >按照重定向
-H [arg] - > Headers
curl
可用于代替wget
.UPDATE FOR JDK 7u79
TAR GZ:
使用curl的RPM:
再次确保为要下载的版本指定正确的URL . 您可以在此处找到该网址:Oracle JDK download site
ORIGINAL ANSWER FROM 9th June 2012
如果您要使用
wget
从命令行下载Oracle JDK,则有一种解决方法 . 运行wget
命令,如下所示:请务必使用正在下载的版本替换下载链接 .
Java SE开发工具包8u191
TAR GZ:
RPM:
wget 这为我工作了JDK8
从命令行下载Java总是很麻烦 . 我一直在做的是使用FireFox(其他浏览器可能有效)在我的笔记本电脑上启动下载,暂停它(在下载窗口中),使用显示的上下文菜单中的“复制下载链接”菜单项下载文件 . 然后可以在Linux机器上使用此URL来下载相同的文件 . 我希望URL的生存时间很短 . 丑,但一般都很成功 .
我为我的gentoo框制作了一个jdk下载脚本(特定于tar.gz) . 不需要像其他类似脚本一样进行更新,尝试“暴力”下载最新版本,无论您想要什么版本 .
USAGE
Blog post
Source on bitbucket
Context
我最近遇到了同样的问题,虽然这个页面上的评论和其他一些提供了有用的提示 - 我认为记录我为可能需要进一步帮助的人解决问题所采取的步骤会很好 .
System Details
我是遵循PNDA在AWS上设置,遵循以下步骤:pnda安装指南:
我在AWS Cloud 上使用ubuntu 14.04 [免费等级资格],并且正在运行64位windows8.1笔记本电脑的代码 . 我正在使用PUTTY连接到服务器实例 . 我git克隆了从https://github.com/pndaproject/pnda到ubuntu实例的pnda代码 .
Important Note 请注意,如果您计划在AWS上使用Ubuntu实例,请确保它仅为14.04 . 如果您使用的是版本16,则不起作用 . 我学到了很难的方法!
Resolution Steps
因为那些已经遇到这里讨论的错误的人会知道 - 镜像创建文件涉及以下步骤 -
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
进行了以下更改;我添加了--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
我希望这是有帮助的 .
你应该试试:
对于那些也需要JCE8的用户,也可以下载 .
要么
我解决了这个问题(对于基于Debian的Linux发行版),通过使用
java-package
几次(对于各种体系结构),然后在内部进行分发 .最重要的一面是这种方法总能奏效;无论Oracle的网页多么疯狂 . Oracle不能再破坏我的构建了!
缺点是最初设置起来要多做一些工作 .
在浏览器中手动下载tar.gz文件(因此"accepting"他们的条款)
运行
make-jpkg jdk-7u51-linux-x64.tar.gz
. 这创造了oracle-java8-jdk_8_amd64.deb
在您的组织内分发它
为了通过Internet分发,我建议使用受密码保护的apt存储库或使用对称加密提供原始包:
当然,在互联网上提供(未加密的).deb软件包可能违反了与Oracle的许可协议,其中规定:
在接收端,如果您有密码保护的apt repo,您需要做的只是
apt-get install
它 . 如果你有原始包,请下载,解密和dpkg -i
. 奇迹般有效!正如已经发布在这里:https://stackoverflow.com/a/41718895/4370196
更新JDK 8 Update 121
由于Oracle在其下载链接中插入了一些md5hash,因此无法自动组装命令行的下载链接 .
所以我修改了一些令人讨厌的bash命令行来获取最新的jdk下载链接,下载并直接通过rpm安装 . 对于所有感兴趣的人:
bold part 应该由您喜欢的包替换 .
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”
(Irani更新到我的答案,但这里是为了澄清一切 . )
编辑:已于2018年10月16日发布的Java 11.0.1更新
Wget
JRE 8u191 (no cookie flags): http://javadl.oracle.com/webapps/download/AutoDL?BundleId=235717_2787e4a523244c269598db4e85c51e0c
有关详细信息,请参阅oracle.com和java.com中的下载 .
允许继续未完成的下载 .
自2014年3月15日起,此cookie在接受License Agreement后提供给用户,并且是访问download.oracle.com中的Java包所必需的 . 2012年3月27日的先前(和第一次)实施使用了cookie
gpw_e24=http%3A%2F%2Fwww.oracle.com[...]
. 这两起案件都没有向公众宣布 .该值不必是“
accept-securebackup-cookie
” .Wget <1.13必需
仅需要wget 1.12及更早版本,其中包括主题备用名称(SAN)证书(主要是Red Hat Enterprise Linux 6.x和朋友,如CentOS) . 1.13是2011年8月released .
要查看当前版本,请使用:
wget --version | head -1
不需要
组合
--no-cookies --header "Cookie: name=value"
被称为“official“cookie支持,但这里不是严格要求的 .cURL
cURL需要重定向到所有镜像 .
往上看 . cURL最后要求破折号(
-
) .与
-H / --header "Cookie: ..."
相同,但也接受文件 .cURL需要保存文件(有关更多差异,请参阅author's comparison) .
Updated for JDK 8u171 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
截至2017-04-25,接受的答案对我不起作用 . 但是,简单的解决方案是使用
-b
标志而不是--header
选项 .例如,要获取jdk-1.8_131:
这将在后台执行,将输出写入
wget-log
.这个命令现在可以下载jdk8 tgz包(2018-09-06),祝你好运!
尝试
如果你像我一样想要获得Oracle JDK 6 .
来源:Oracle JVM download using curl/wget
最新测试,
请注意,如果您关心绝对安全性,则会禁用证书检查 . :)
为什么不点击从浏览器下载,然后复制并粘贴下载它的确切链接,例如:
在接受oracle中的术语并单击下载后,您可以通过查看浏览器的网络选项卡找到该链接 . Chrome中的F12 . Firefox中的Firebug .