Linux 纯手动安装 JDK 17 全程复盘(被 Oracle 背刺麻了)

Linux 纯手动安装 JDK 17 全程复盘(被 Oracle 背刺麻了)

_

平时习惯了各种一键安装,这次打算在 Ubuntu 上规规范范地搞一次纯手动安装。毕竟用 .tar.gz 这种绿色免安装版,以后迁移服务器直接打包带走就行,主打一个纯净和尽在掌控。

结果一上来,直接被 Oracle 官方的“下载墙”按在地上摩擦…… 🤦‍♂️ 赶紧写篇博客把这个大坑和全用户全局变量的配置流程记录下来。

1. 刚上来就被 Oracle 演了 💢

本来想着直接在终端里一行 wget 把 JDK 17 拉下来,结果:

  • 第一次:直接甩我一个 404 Not Found

  • 第二次:好不容易看着下载完了,结果解压的时候疯狂报错:gzip: stdin: not in gzip format

file 命令一查才发现,下载下来的根本不是压缩包,而是一个披着 .tar.gz 后缀的 HTML 网页文本!原因是 Oracle 官网有各种动态验证和重定向拦截。

💡 终极解决办法: 别盲猜直链了,直接在 Windows 浏览器里老老实实过了验证下载好,然后通过终端工具上传!

2. 实操连招:本地下载 + rz 上传 🚀

因为要遵循 Linux 的 FHS 规范,自己手动维护的开发环境最好放在 /usr/local/ 下,所以先建个目录:

mkdir -p /usr/local/java
cd /usr/local/java

接着掏出上传神器 rz(如果提示命令不存在,先执行 apt install lrzsz -y 装一下)。

在终端敲下 rz,直接弹出 Windows 文件选择框,把下好的 jdk-17.0.19_linux-x64_bin.tar.gz 选上,啪一下就传过去了,稳得不行。😎

3. 解压并记住版本号 📦

传好之后,直接就地解压:

tar -zxvf jdk-17.0.19_linux-x64_bin.tar.gz

解压完敲个 ls,就能看到解压出来的真实文件夹 jdk-17.0.19 啦,把这个名字记死,呆会配环境变量少一个字母系统都找不到它。

4. 拒绝局限!配置全用户通用的全局变量 🌍

很多老教程教人把配置写在 ~/.bashrc 里,但那只是当前用户的私有配置(比如你在 root 下改了,普通用户根本用不了)。

为了让服务器上所有的系统用户都能随时随地卷 Java,最优雅的做法是在 /etc/profile.d/ 下建个独立的全局脚本:

vim /etc/profile.d/java.sh

用 Vim 打开后,按 i 进入插入模式,直接把下面这段贴进去(路径严格对齐刚刚解压出来的版本):

# Global Java Environment
export JAVA_HOME=/usr/local/java/jdk-17.0.19
export PATH=$JAVA_HOME/bin:$PATH

保存退出(:wq),顺手给这个脚本加个可执行权限,让别的用户也能读到它:

chmod +x /etc/profile.d/java.sh

5. 刷新,搞定!🎉

最后一步,让配置立刻生效:

source /etc/profile

怀着激动的心情,直接敲下验证命令,当终端甩出下面这段丝滑的输出时,心里瞬间踏实了:

root@loe-virtual-machine:/usr/local/java# java --version
java 17.0.19 2026-04-21 LTS
Java(TM) SE Runtime Environment (build 17.0.19+9-LTS-183)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.19+9-LTS-183, mixed mode, sharing)

不仅 root 能用,切换到普通用户(su - 你的普通用户名)执行同样的命令也是完美打印!这一波与 Oracle 下载墙的拉锯战,彻底打赢!

🧹 强迫症小贴士: 确认没问题后,记得把原本那个几百兆的 .tar.gz 压缩包用 rm -f jdk-17.0.19_linux-x64_bin.tar.gz 删掉,服务器空间能省一点是一点嘛~

如何把打包好的 Java Jar 包做成 Docker 镜像 2026-06-11
MySQL 逻辑删除遭遇唯一索引冲突的优雅解法 2026-06-13

评论区