Linux下安装JDK23需三步:先卸载旧JDK(rpm -qa | grep java或dpkg -l | grep openjdk),再将JAVA_HOME精确设为解压后的顶层目录(如/usr/local/jdk23),最后source /etc/profile使配置生效;漏任一环则java -version可能仍显示旧版或报错。

Linux 下安装 JDK 23 不是“解压完就完事”,关键在三处:卸载旧 JDK 避免冲突、JAVA_HOME 路径必须精确到解压后的**顶层目录**(不是 tar.gz 文件名)、/etc/profile 中的配置对所有用户生效但需 source 才即时可用——漏掉任一环节,java -version 都可能仍显示旧版本或报 command not found。
怎么确认系统自带 JDK 并彻底卸载
很多 Linux 发行版预装 OpenJDK(比如 Ubuntu 的 openjdk-17-jdk 或 CentOS 的 java-17-openjdk),它们会干扰 JDK 23 的识别。不能只靠 java -version 判断是否干净:
-
rpm -qa | grep java(CentOS/RHEL)或dpkg -l | grep openjdk(Ubuntu/Debian)列出所有 Java 相关包 - 逐个卸载:用
sudo rpm -e --nodeps <包名>或sudo apt remove --purge <包名> - 卸载后执行
which java和ls -l $(which java),确认无残留软链接指向旧bin/java - 最后再跑一次
java -version,应提示command not found才算清空
解压 JDK 23 后路径怎么写才不踩坑
JDK 23 官方 tar.gz 解压后生成的是带版本号的子目录(如 jdk-23.0.1),JAVA_HOME 必须指向这个完整路径,而不是父目录。常见错误是写成 /usr/local/jdk 却没建软链接,导致后续 Hadoop、Maven 等工具读不到 lib 或 include 子目录:
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
- 推荐做法:解压到
/usr/local/,例如sudo tar -zxvf jdk-23.0.1_linux-x64.tar.gz -C /usr/local/ - 然后创建稳定路径:
sudo ln -sf /usr/local/jdk-23.0.1 /usr/local/jdk23 -
JAVA_HOME就设为/usr/local/jdk23——这样升级时只需改软链接,不用动环境变量 - 验证:
echo $JAVA_HOME应输出该路径;ls $JAVA_HOME/bin/java必须存在
为什么改了 /etc/profile 还是不生效
/etc/profile 是系统级配置,修改后仅对**新启动的登录 shell** 生效。当前终端不会自动重载,且部分桌面环境(如 GNOME Terminal)默认启动非登录 shell,根本不会读取它:
立即学习“Java免费学习笔记(深入)”;
- 必须手动运行
source /etc/profile让当前终端立即加载 - 检查是否被其他文件覆盖:某些发行版(如 Ubuntu)会在
~/.profile里追加 PATH,可能把$JAVA_HOME/bin排在旧路径后面,导致which java仍找到旧版本 - 终极验证法:
env | grep JAVA看变量是否存在;java -version和javac -version必须同时显示23.0.1(注意 javac 版本号要一致,否则说明PATH没配对)
最易被忽略的是:JDK 23 默认禁用某些老旧 API(如 javax.xml.bind),如果项目编译报 package javax.xml.bind does not exist,不是环境没配好,而是得加 --add-modules java.xml.bind 参数——这和安装配置无关,但新手常误以为是 JAVA_HOME 搞错了。

















