Linux装JDK核心是装对版本并正确配置JAVA_HOME:一、优先用APT或DNF安装OpenJDK(如sudo apt install openjdk-17-jdk),路径通常为/usr/lib/jvm/java-17-openjdk-amd64;二、手动安装需解压tar.gz至/usr/lib/jvm/,JAVA_HOME必须指向JDK根目录(非bin或jre);三、全局配置推荐/etc/profile.d/java.sh,个人配置改~/.bashrc或~/.zshrc;四、验证需同时检查java/javac版本、$JAVA_HOME路径及mvn/gradle等工具识别。

Linux下装JDK,核心就两件事:装对版本、路径配准。别只管java -version能跑就以为完事——很多工具(Maven、Tomcat、IDE)真正依赖的是JAVA_HOME这个变量,它必须指向JDK根目录,不能是bin子目录,也不能带错斜杠或拼写错误。
选安装方式:包管理器优先,手动安装更可控
日常开发或测试环境,直接用系统包管理器最省心;生产环境或需特定版本(比如JDK 8跑老项目、JDK 21试新特性),建议手动下载解压。
-
Ubuntu/Debian系:运行
sudo apt update && sudo apt install openjdk-17-jdk。装完路径通常在/usr/lib/jvm/java-17-openjdk-amd64,可用readlink -f $(which java) | sed 's|/jre/bin/java||'快速确认。 -
CentOS/RHEL 8+:用
sudo dnf install java-17-openjdk-devel。 -
手动安装:从Adoptium(Eclipse Temurin)或Azul Zulu官网下载tar.gz包(推荐,免费可商用),解压到
/usr/lib/jvm/或/opt/,例如:sudo tar -xzf jdk-17.0.2+8_linux-x64_bin.tar.gz -C /usr/lib/jvm/。解压后目录名如jdk-17.0.2+8,就是后续JAVA_HOME的值。
JAVA_HOME必须指向JDK根目录,不是bin,也不是jre
JAVA_HOME的作用是让其他Java工具定位JDK安装位置。如果设成/usr/lib/jvm/java-17-openjdk-amd64/bin或/usr/lib/jvm/java-17-openjdk-amd64/jre,Maven会报错“JAVA_HOME does not point to a valid JVM installation”。
- 正确示例:
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64(包管理器安装) - 正确示例:
export JAVA_HOME=/usr/lib/jvm/jdk-17.0.2+8(手动安装) - 验证方法:
echo $JAVA_HOME输出应为完整路径,且该路径下必须存在bin/java和lib/rt.jar(或lib/modules,JDK 9+)等关键文件。
配置生效范围:全局用/etc/profile.d/,个人用~/.bashrc
不要直接改/etc/profile,也不要用/etc/environment(它不支持变量展开)。现代Linux发行版推荐用/etc/profile.d/放独立脚本,更清晰、易维护。
立即学习“Java免费学习笔记(深入)”;
-
所有用户生效:创建
sudo nano /etc/profile.d/java.sh,写入两行:export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64export PATH=$JAVA_HOME/bin:$PATH
保存后执行source /etc/profile.d/java.sh立即生效。 -
仅当前用户生效:编辑
~/.bashrc,末尾加同样两行,然后运行source ~/.bashrc。注意:若用zsh,要改~/.zshrc。
验证三步走:命令、变量、工具链
光看java -version不够,得确认整个Java生态链都认得这个JAVA_HOME。
- 运行
java -version和javac -version,确保输出一致且无报错。 - 运行
echo $JAVA_HOME,确认路径正确;再运行$JAVA_HOME/bin/java -version,强制走该路径验证。 - 测试常用工具:
mvn -v应显示Java版本;gradle --version也应能识别JDK;IDE(如IntelliJ)启动时不再提示“Cannot determine path to ‘tools.jar’”。


















