温馨提示×

Ubuntu如何设置Java版本

小樊
33
2025-11-28 19:51:32
栏目: 编程语言

Ubuntu设置与切换Java版本

一 安装多个JDK版本

  • 更新索引并安装常用的 LTS 版本(如 OpenJDK 11OpenJDK 17):
    • 命令:sudo apt update
    • 命令:sudo apt install openjdk-11-jdk openjdk-17-jdk
  • 安装完成后可用 java -version 验证当前默认版本。

二 使用系统工具 update-alternatives 切换

  • 交互式选择默认版本:
    • 命令:sudo update-alternatives --config java
    • 按提示输入编号选择所需的 Java 可执行文件路径。
  • 若列表缺少某个已安装版本,可手动注册并设定优先级(数值越大优先级越高):
    • 命令:sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1
    • 命令:sudo update-alternatives --install /usr/lib/jvm/java-17-openjdk-amd64/bin/java 2
  • 同时切换编译器(可选):
    • 命令:sudo update-alternatives --config javac
  • 验证:java -versionjavac -version

三 设置 JAVA_HOME 与环境变量

  • 为当前用户设置(写入 shell 配置文件,如 ~/.bashrc~/.zshrc):
    • 示例:export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
    • 示例:export PATH=$JAVA_HOME/bin:$PATH
    • 使生效:source ~/.bashrcsource ~/.zshrc
  • 为所有用户设置(写入 /etc/environment,系统级生效):
    • 示例:JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
    • 示例:PATH="$JAVA_HOME/bin:$PATH"
    • 使生效:重新登录或执行 source /etc/environment
  • 快速从当前默认 java 推导 JAVA_HOME(无需硬编码路径):
    • 命令:export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")

四 使用版本管理工具 jenv 或 SDKMAN

  • jenv(适合多版本精细化控制):
    • 安装:git clone https://github.com/jenv/jenv.git ~/.jenv
    • 初始化:echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bashrcecho 'eval "$(jenv init -)"' >> ~/.bashrc,然后 source ~/.bashrc
    • 添加 JDK:jenv add /usr/lib/jvm/java-11-openjdk-amd64jenv add /usr/lib/jvm/java-8-openjdk-amd64
    • 切换:jenv global 11.0jenv shell 8.0,或 jenv local 17.0(目录级)
  • SDKMAN!(适合开发者快速安装与切换多版本 SDK):
    • 安装:curl -s "https://get.sdkman.io" | bash,然后 source "$HOME/.sdkman/bin/sdkman-init.sh"
    • 使用:sdk install java 11.0.11-opensdk use java 8.0.292-opensdk default java 11.0.11-open

五 常见问题与排查

  • 版本冲突与残留旧版本:
    • 处理思路:统一使用 update-alternatives 管理;必要时移除不需要的包(如 sudo apt-get remove openjdk-<version>),再重新配置默认版本。
  • 某些应用仍用旧版本:
    • 检查应用配置是否显式设置了 JAVA_HOME(如 Tomcat:编辑 /etc/default/tomcat,设置 JAVA_HOME=...,然后 sudo systemctl restart tomcat)。
  • 环境变量不生效:
    • 核对 ~/.bashrc~/.zshrc/etc/environment 的语法与路径;执行 echo $JAVA_HOME 验证;必要时 source 重载或重新登录。

0