无网络环境安装jdk需先确认架构并清除旧java残留,再解压至/opt目录、验证结构完整性,配置java_home与path(推荐/etc/profile.d/java.sh),通过硬链接接管系统命令,最后三重验证java/javac版本。

在无网络连接的生产服务器或隔离网段中安装Java JDK,必须绕过包管理器直接解压配置,否则会因缺少依赖数据库或远程仓库而失败。
确认系统架构与清理旧Java残留
先执行 uname -m 查看输出是 x86_64 还是 aarch64——【aarch64机器绝不能用x86_64的JDK包,否则解压后java命令直接报错Illegal instruction】。
运行 which java 和 readlink -f /usr/bin/java,若指向 /usr/lib/jvm/java-11-openjdk-amd64 类路径,说明系统自带OpenJDK仍在生效,必须清除。
CentOS/RHEL系执行:rpm -qa | grep java | xargs -r rpm -e --nodeps;Ubuntu/Debian系执行:dpkg -l | grep openjdk | awk '{print $2}' | xargs -r apt-get remove --purge -y。
这一步不做干净,后续JAVA_HOME即使设对了,java -version 仍会显示旧版本。
解压JDK到标准路径并验证结构
把下载好的 jdk-17.0.2_linux-x64_bin.tar.gz(Oracle)或 temurin-17.0.2+8-linux-x64.tar.gz(Eclipse)上传至目标机,推荐解压到 /opt:
sudo tar -zxf jdk-17.0.2_linux-x64_bin.tar.gz -C /opt
解压后检查目录结构:ls -l /opt/jdk-17.0.2 必须包含 bin/、lib/、conf/ 三个一级子目录——【若看到的是 /opt/jdk-17.0.2/jre/bin/java,说明你误解压进了jre子目录,立刻删掉重来】。
别急着配环境变量,先手动测试:/opt/jdk-17.0.2/bin/java -version 应输出完整版本号。不通过就别往下走。
配置JAVA_HOME与PATH(生产级写法)
方法一:全局生效(推荐用于服务器)
创建 /etc/profile.d/java.sh 文件,内容为:
export JAVA_HOME=/opt/jdk-17.0.2export PATH=$JAVA_HOME/bin:$PATH
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
给它加执行权限:sudo chmod +x /etc/profile.d/java.sh。这个位置比改 ~/.bashrc 更可靠,root和普通用户都生效。
方法二:单用户临时生效(调试用)
编辑 ~/.bashrc,末尾追加两行:export JAVA_HOME=/opt/jdk-17.0.2 和 export PATH=$JAVA_HOME/bin:$PATH,然后执行 source ~/.bashrc。
⚠️注意:不要只写 export PATH=$PATH:$JAVA_HOME/bin——把 $JAVA_HOME/bin 放后面会导致系统原有 /usr/bin/java 优先被调用。
硬链接替代update-alternatives(离线核心技巧)
第一步:清空 /usr/local/bin 下可能存在的java相关软链接:sudo rm -f /usr/local/bin/java /usr/local/bin/javac /usr/local/bin/jar。
第二步:建立硬链接指向新JDK的可执行文件:sudo ln -sf /opt/jdk-17.0.2/bin/* /usr/local/bin/。
第三步:确保 /usr/local/bin 在PATH最前面:echo $PATH 输出应以 /usr/local/bin: 开头,否则在 /etc/profile 或 /etc/environment 中调整顺序。
这一步做完,which java 返回 /usr/local/bin/java,且 ls -l /usr/local/bin/java 显示指向 /opt/jdk-17.0.2/bin/java,才算真正接管系统命令。
验证是否完全生效
打开新终端或执行 exec bash,一次性运行以下命令:
echo $JAVA_HOME && $JAVA_HOME/bin/java -version && javac -version
三段输出必须全部成功:第一段显示路径,第二段显示JDK 17版本,第三段显示javac版本号——【javac -version失败说明JAVA_HOME指向错误或未包含tools.jar,Temurin版需额外处理】。
若用的是Eclipse Temurin等构建版JDK且项目依赖tools.jar,立即改用Oracle JDK,或升级Maven插件到3.8+版本。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










