Linux下Java版本控制与切换实践
一 核心概念与准备
ls /usr/lib/jvm/java -version、javac -version、which java、echo $JAVA_HOME。二 系统级切换 update-alternatives
java命令,稳定、通用,适合服务器与多用户环境。sudo apt install openjdk-8-jdk openjdk-11-jdksudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-8-openjdk-amd64/bin/java 1
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-11-openjdk-amd64/bin/java 2
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-8-openjdk-amd64/bin/javac 1
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-11-openjdk-amd64/bin/javac 2
sudo update-alternatives --config java(同理可对javac执行)。java -version、javac -version。java而编译器不一致,建议同时注册并切换javac。三 用户级与项目级管理工具
curl -s "https://get.sdkman.io" | bash,然后执行:source "$HOME/.sdkman/bin/sdkman-init.sh"sdk list javasdk install java 11.0.12-opensdk use java 11.0.12-opensdk default java 11.0.12-opengit clone https://github.com/jenv/jenv.git ~/.jenv,并在~/.bashrc或~/.zshrc加入:export PATH="$HOME/.jenv/bin:$PATH"
eval "$(jenv init -)"
jenv add /usr/lib/jvm/java-11-openjdk-amd64jenv versionsjenv global 11 / jenv local 11 / jenv shell 11四 手动环境变量与别名切换
JAVA_HOME与PATH(写入~/.bashrc或~/.profile):export JAVA_HOME_8=/usr/lib/jvm/java-8-openjdk-amd64
export JAVA_HOME_11=/usr/lib/jvm/java-11-openjdk-amd64
# 便捷切换函数
useJava() {
case "$1" in
8) export JAVA_HOME=$JAVA_HOME_8 ;;
11) export JAVA_HOME=$JAVA_HOME_11 ;;
*) echo "Usage: useJava 8|11"; return 1 ;;
esac
export PATH=$JAVA_HOME/bin:$PATH
echo "Switched to JDK $1, JAVA_HOME=$JAVA_HOME"
}
source ~/.bashrcuseJava 8 或 useJava 11,随后用java -version验证。五 项目级编译运行与IDE设置及常见问题
pom.xml中):<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
build.gradle中):sourceCompatibility = 1.8
targetCompatibility = 1.8
java.homesource ~/.bashrc或重开终端;确认PATH中$JAVA_HOME/bin位于前列。which java、echo $PATH,确保JAVA_HOME/bin已加入PATH。sudo chown -R $USER:$USER $JAVA_HOMEjava未切换javac:对javac也执行update-alternatives --config javac。