在 Ubuntu 上升级 Java 编译器的最佳实践
一 前置检查
java -version、javac -version。dpkg -l | grep openjdk。update-alternatives 切换默认版本,确保升级的是 JDK(包含 javac),而非仅 JRE。二 方法一 使用 APT 安装或升级 OpenJDK(推荐)
sudo apt updatesudo apt install openjdk-17-jdkjava -version、javac -version 应显示新版本。sudo update-alternatives --config javasudo update-alternatives --config javacopenjdk-11-jdk、openjdk-21-jdk)。三 方法二 手动安装 Oracle JDK 或 .tar.gz 包
sudo mkdir -p /usr/lib/jvmsudo tar zxvf jdk-17_linux-x64_bin.tar.gz -C /usr/lib/jvmupdate-alternatives 注册并切换:
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-17/bin/java 100sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk-17/bin/javac 100sudo update-alternatives --config java、sudo update-alternatives --config javacsudo dpkg -i jdk-22_linux-x64_bin.deb。java -version、javac -version。四 设置环境变量与多版本管理
sudo nano /etc/environmentJAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"source /etc/environment;验证:echo $JAVA_HOME。~/.bashrc 或 /etc/profile.d/jdk.sh 中设置 JAVA_HOME 与 PATH,并 source 使生效。update-alternatives --config java 与 --config javac 切换默认编译器,避免仅改 PATH 导致版本不一致。五 验证与常见问题处理
java -version、javac -version(应一致)which java、which javac(确认指向期望路径)echo 'public class Hello { public static void main(String[] a){ System.out.println("Hi"); } }' > Hello.javajavac Hello.java && java Helloupdate-alternatives 重新选择默认 java/javac。JAVA_HOME 路径正确,执行 source /etc/environment 或重启终端;检查是否在 ~/.bashrc 等文件中覆盖了 PATH。