Linux安装JDK需按需求选择包管理器或手动安装:全局用apt/yum装OpenJDK即可;Oracle JDK、特定版本、离线环境或多版本共存则须手动解压tar.gz并配置JAVA_HOME与PATH,且须验证javac/jar及Maven实际使用的Java路径。

Linux 上安装 JDK 不是“装个包就完事”,关键看你是要系统级全局使用,还是仅当前用户、或某个应用独立管理。直接用 apt 或 yum 装的 OpenJDK 通常够用;但如果你明确需要 Oracle JDK、特定版本(如 JDK 8u202)、或得避开系统包管理器的旧版本限制,就得手动下载 tar.gz 并配置 JAVA_HOME 和 PATH —— 否则 java -version 显示的很可能不是你刚解压的那个。
怎么判断该用包管理器还是手动安装
取决于你的约束条件:
- 项目要求必须用 Oracle JDK(比如某些老金融中间件)→ 只能手动下载
jdk-8u202-linux-x64.tar.gz或对应版本 - 只是跑 Spring Boot 3.x 或 Maven 构建 →
apt install openjdk-17-jdk(Debian/Ubuntu)或dnf install java-17-openjdk-devel(RHEL/CentOS 8+)更省心,自动注册到update-alternatives - 服务器禁止外网访问,但内网有 JDK 包 → 手动传
.tar.gz到/opt/java解压,再配环境变量 - 多个 Java 版本共存(如同时跑 JDK 11 和 JDK 17 的服务)→ 必须手动安装 + 用
update-alternatives --config java切换,包管理器默认只留最新一个
手动安装后 JAVA_HOME 总不生效?检查这三处
常见问题不是路径写错,而是生效范围不对:
-
JAVA_HOME必须指向 JDK 根目录(如/opt/jdk-17.0.1),不是/opt/jdk-17.0.1/bin—— 后者会导致javac找不到 - 在
/etc/profile或~/.bashrc里加了export JAVA_HOME=...,但没执行source ~/.bashrc,或者开的是新终端没重读配置 - 某些 CI 工具(如 Jenkins agent)或 systemd 服务不读 shell 配置文件 → 必须在服务 unit 文件里显式写
Environment="JAVA_HOME=/opt/jdk-17.0.1"
验证安装是否真的成功,别只信 java -version
java -version 只说明 java 命令可用,但编译和构建常依赖 javac 和 jar,它们可能不在同一位置:
第一步】:将安装包中所有的文件夹和文件用ftp工具以二进制方式上传至服务器空间;(如果您不知如何设置ftp工具的二进制方式,可以查看:(http://www.shopex.cn/support/qa/setup.help.717.html)【第二步】:在浏览器中输入 http://您的商店域名/install 进行安装界面进行安装即可。【第二步】:登录后台,工具箱里恢复数据管理后台是url/sho
立即学习“Java免费学习笔记(深入)”;
- 运行
which java和which javac,确认两者都指向$JAVA_HOME/bin/下的可执行文件 - 执行
$JAVA_HOME/bin/javac -version,避免出现 “command not found” —— 这说明PATH漏了$JAVA_HOME/bin - 如果用 Maven,跑
mvn -v,它会显示实际使用的 Java 路径;若仍显示旧版本,说明 Maven 启动脚本(mvn)里硬编码了JAVA_HOME,需修改该脚本
最易被忽略的一点:某些 Linux 发行版(如 CentOS Stream)默认预装 java-11-openjdk-headless,它没有 javac —— 你得额外装 java-11-openjdk-devel。光看 java -version 正常,一编译就报 “javac: command not found”,就是这个原因。









