Linux系统需先执行java -version和which java检查是否安装Java;若未安装或仅装JRE则javac不可用;推荐下载OpenJDK tar.gz包解压至/opt/java/并配置/etc/profile.d/java.sh中的JAVA_HOME与PATH,确保systemd服务等能识别。

确认Linux系统是否已安装Java
很多Linux发行版(如Ubuntu、CentOS)默认不带JDK,但可能预装了OpenJDK的JRE或精简版。先执行 java -version 和 which java 看输出;如果报 command not found,说明未安装或PATH未生效。注意:仅安装 openjdk-11-jre(非 -jdk)会导致后续编译失败,javac 命令不可用。
下载并解压JDK tar.gz包(推荐方式)
Oracle JDK官网已限制直接下载,建议使用OpenJDK官方构建(如 Eclipse Temurin)或系统包管理器。若需手动部署:下载 jdk-17.0.1_linux-x64_bin.tar.gz 后,解压到统一目录如 /opt/java/jdk-17.0.1,避免放在 /usr/lib/jvm/ 下导致包管理器冲突。解压后立即验证:/opt/java/jdk-17.0.1/bin/java -version 应正常输出。
配置JAVA_HOME与PATH(关键步骤)
必须同时设置 JAVA_HOME 和将 $JAVA_HOME/bin 加入 PATH,否则部分Java服务(如Tomcat、Spring Boot CLI)会启动失败。编辑 /etc/profile.d/java.sh(全局生效,比修改 /etc/profile 更规范),写入:
export JAVA_HOME=/opt/java/jdk-17.0.1 export PATH=$JAVA_HOME/bin:$PATH
然后执行 source /etc/profile.d/java.sh。注意:不要在 ~/.bashrc 中配置——这仅对当前用户生效,systemd服务或后台进程无法读取。
立即学习“Java免费学习笔记(深入)”;
验证环境变量是否被所有进程识别
运行 echo $JAVA_HOME 和 java -version 是基础检查,但不够。真正重要的是:用 sudo -i 切换到root再执行,或新建systemd服务(如写个最小 test-java.service)测试。常见坑是:普通用户能跑,但Tomcat用 tomcat 用户启动时提示 Unable to find java,本质是该用户shell未加载全局profile。解决方案是:确保 /etc/profile.d/java.sh 有可执行权限(chmod +x),且该文件被所有登录shell自动source。










