温馨提示×

Ubuntu Java版本如何切换

小樊
37
2025-12-20 12:06:21
栏目: 编程语言

Ubuntu 切换 Java 版本指南

一 使用 update-alternatives 切换系统默认版本

  • 安装多个 JDK(示例为 OpenJDK 11OpenJDK 17):
    • sudo apt update
    • sudo apt install openjdk-11-jdk
    • sudo apt install openjdk-17-jdk
  • 将 java、javac 等命令注册到 alternatives(优先级数值越大优先级越高):
    • sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1
    • sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-17-openjdk-amd64/bin/java 2
    • sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-11-openjdk-amd64/bin/javac 1
    • sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-17-openjdk-amd64/bin/javac 2
  • 交互式选择默认版本:
    • sudo update-alternatives --config java
    • sudo update-alternatives --config javac
  • 验证:
    • java -version
    • javac -version
  • 非交互式一键切换(已知路径时):
    • 查看可选项:update-alternatives --list java
    • 指定版本:sudo update-alternatives --set java /usr/lib/jvm/java-17-openjdk-amd64/bin/java
    • 同步切换编译器:sudo update-alternatives --set javac /usr/lib/jvm/java-17-openjdk-amd64/bin/javac

二 设置 JAVA_HOME 与环境变量

  • 为当前用户设置(写入 shell 配置文件,如 ~/.bashrc~/.zshrc):
    • echo ‘export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64’ >> ~/.bashrc
    • echo ‘export PATH=$JAVA_HOME/bin:$PATH’ >> ~/.bashrc
    • source ~/.bashrc(或 source ~/.zshrc)
  • 为所有用户设置(写入 /etc/environment,系统级生效):
    • 在 /etc/environment 中添加:JAVA_HOME=“/usr/lib/jvm/java-17-openjdk-amd64”
    • 重新登录或执行 source /etc/environment 使其生效
  • 注意:若设置了 JAVA_HOME,请确保它指向你通过 alternatives 选择的同一 JDK,避免与系统默认不一致。

三 使用版本管理工具

  • SDKMAN!(适合开发与多版本并行):
    • 安装:curl -s “https://get.sdkman.io” | bash && source “$HOME/.sdkman/bin/sdkman-init.sh”
    • 安装 JDK:sdk install java 11.0.11-open;sdk install java 17.0.1-open
    • 切换:sdk use java 11.0.11-open;设置默认:sdk default java 11.0.11-open
  • jenv(轻量 Java 版本管理):
    • 安装:git clone https://github.com/jenv/jenv.git ~/.jenv && echo ‘export PATH=“$HOME/.jenv/bin:$PATH”’ >> ~/.bashrc && echo ‘eval “$(jenv init -)”’ >> ~/.bashrc && source ~/.bashrc
    • 添加 JDK:jenv add /usr/lib/jvm/java-11-openjdk-amd64;jenv add /usr/lib/jvm/java-17-openjdk-amd64
    • 切换:jenv global 11.0;jenv shell 17.0;jenv local 17.0(当前目录生效)

四 常见问题与排查

  • 切换后仍显示旧版本:
    • 检查 java 命令来源:which java(应为 /usr/bin/java,它是 alternatives 的软链)
    • 检查环境变量:echo $JAVA_HOME,若手动设置了 JAVA_HOME,请确认路径与所选版本一致
    • 若使用手动 JDK(非 apt 安装),需确保已用 alternatives 注册了 java、javac、jar 等命令
  • 列出与移除已注册版本:
    • 列出:update-alternatives --list java
    • 移除:sudo update-alternatives --remove java /path/to/java
  • 仅临时使用某版本(无需改默认):
    • /usr/lib/jvm/java-17-openjdk-amd64/bin/java -jar app.jar
  • 特定应用(如 Tomcat)使用指定 JDK:
    • 编辑其配置文件(如 /etc/default/tomcat)设置 JAVA_HOME,然后重启服务:sudo systemctl restart tomcat。

0