环境准备
在开始之前,确保你拥有一台运行 Ubuntu 20.04 LTS 的云服务器。本次演示基于 Oracle JDK 17.0.16 版本,采用 tar.gz 压缩包进行手动解压安装,这种方式灵活性更高,适合需要自定义安装路径的场景。
下载与上传安装包
首先从 Oracle 官网获取 Linux x64 压缩版安装包(文件名类似 jdk-17.0.16_linux-x64_bin.tar.gz)。
如果你习惯使用命令行,可以直接通过 SCP 将本地文件传输到服务器:
scp /path/to/jdk-17.0.16_linux-x64_bin.tar.gz ubuntu@服务器 IP:/opt/java/
或者在服务器上直接使用 wget 下载(需确认网络连通性):
cd /opt/java
wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz
如果选择图形化界面上传,记得先确保目录权限正确,否则可能会遇到写入失败的问题。
解压与目录配置
创建标准安装目录并赋予当前用户权限,这能避免后续操作出现权限拒绝错误。
sudo mkdir -p /opt/java
sudo chown -R ubuntu:ubuntu /opt/java
sudo chmod -R 755 /opt/java
进入目录后解压安装包。解压后的文件夹名称通常包含版本号,比如 jdk-17.0.16,请务必记下这个实际名称,后面配置环境变量时会用到。
cd /opt/java
tar -xzf jdk-17.0.16_linux-x64_bin.tar.gz
ls -la
验证一下结构,应该能看到 bin, conf, lib 等核心目录。
配置环境变量
为了让系统在任何位置都能识别 java 命令,我们需要修改系统级配置文件 /etc/profile。
sudo vi /etc/profile
在文件末尾追加以下内容,注意替换为你实际的解压目录名:
# JDK 17 环境变量配置
export JAVA_HOME=/opt/java/jdk-17.0.16
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH
保存退出后,执行以下命令使配置立即生效,无需重启服务器:
source /etc/profile
验证安装结果
配置完成后,通过几个关键命令检查环境是否就绪。
查看 Java 版本:
java -version
预期输出应显示 17.0.16 及 LTS 标识。同时检查编译器版本和路径:
javac -version
which java
echo $JAVA_HOME
如果想进一步测试,可以写一个简单的 Hello World 程序:
cat > Test.java <<'EOF'
public class Test {
public static void main(String[] args) {
System.out.println("JDK 17 安装成功!");
}
}
EOF
javac Test.java
java Test
如果控制台打印出 "JDK 17 安装成功!",说明一切正常。
常见问题排查
1. 提示 command not found
通常是环境变量未生效或配置路径有误。检查 $JAVA_HOME 是否为空,若为空请重新编辑 /etc/profile 并确保执行了 source 命令。
2. 权限不足 (Permission denied)
尝试修正目录所有权:
sudo chown -R ubuntu:ubuntu /opt/java
sudo chmod -R 755 /opt/java
3. 多个 Java 版本冲突
如果系统里装过其他版本,可以用 update-alternatives 管理默认版本,或者直接指定完整路径运行。
替代方案:APT 安装
如果不想手动折腾,也可以直接用包管理器安装 OpenJDK 17,虽然版本可能不是最新,但胜在省心:
sudo apt update
sudo apt install -y openjdk-17-jdk
java -version
这种方式会自动处理大部分配置,适合快速搭建基础环境。

