给一台老机器配环境,项目锁在 JDK 8u202,去 Oracle 官网翻归档页,点下载,跳出来的却是登录框。账号忘了,折腾半天。

这是 Oracle 的老规矩。8u202 之后的商用版本需要账号,归档页早些年能匿名下,现在多数要登录,还得勾一次许可协议。

三个还能匿名下的源

  • Adoptium 的 Temurin:JDK 8 到 21 都有,zip 和 tar.gz 直接给
  • Azul Zulu:老版本齐全,Windows 有 msi 安装包
  • Amazon Corretto:8、11、17、21 的长期支持版都在

这三个都是 OpenJDK 的构建,日常行为一致,缺的是一些 Oracle 特有的商业特性,普通开发基本碰不到。

版本号后面的数字别乱升

8u202 是个分水岭。它和更早的版本可以自由分发,之后换了许可条款。公司做产品打包还停在 8 这条线上的话,先让法务看一眼,别默认能随便装。

17 之后 Oracle 换了免费条款,商用可以免费用,但有条件和期限,别只看到免费商用四个字就下单。

下完先核对,再装

每个发行版都提供 SHA256 和签名,就在下载页下面那几行。Windows 上用 certutil -hashfile 文件名 SHA256 对一遍,对不上别装,重新下。

装完 java -version 看输出,第三行会写具体构建号。老项目报 UnsupportedClassVersionError,是编译和运行的 JDK 版本不匹配,不是代码写错。

环境变量别忘:JAVA_HOME 指向安装目录,Path 里加 %JAVA_HOME%in。两个 JDK 共存时切 JAVA_HOME 就够,不用改 Path,改了反而容易串。

一句话:官方归档要登录,不等于只有那里能下。认准 Temurin、Zulu、Corretto 这类构建,历史版本照样拿得到。