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

对不起! 为了从Oracle技术网络下载产品,您必须同意OTN许可条款。 请务必…… 你的浏览器已经启用了“cookies”和JavaScript。 您点击了希望下载的产品的“接受许可”。 在接受许可后的30分钟内尝试下载。

如何下载及安装Java?


当前回答

下载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}')

my blog is 044-wget

其他回答

甲骨文在下载链接上放置了一个防止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

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

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

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

在浏览器中手动下载tar.gz文件(从而“接受”它们的条款) 执行make-jpkg jdk-7u51-linux-x64.tar.gz。这将创建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 repo,你所需要做的就是apt-get安装它。如果您有原始包,请下载、解密并dpkg -i它们。效果好极了!

这个问题将从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个版本

你应该试试:

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

wget This working for me 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"