在 Ubuntu 上遇到 Java 兼容问题,一般集中在 JDK 版本不一致、多个 Java 共存、环境变量错误、程序依赖旧版 Java 这几类。下面按常见场景给你一套处理思路。
java -version
javac -version
which java
查看已安装的所有 Java:
update-alternatives --list java
sudo apt install openjdk-8-jdk
sudo apt install openjdk-11-jdk
sudo apt install openjdk-17-jdk
sudo update-alternatives --config java
sudo update-alternatives --config javac
按提示选择对应版本号即可。
不要只改系统默认 Java,而是给程序单独指定:
JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
$JAVA_HOME/bin/java -jar yourapp.jar
或在脚本里写死:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
比如:
major version 61(JDK 17)
原因:程序用高版本编译,低版本运行
解决:
javac -source 8 -target 8 xxx.java
sudo apt install openjdk-8-jdk
然后:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
Ubuntu 20.04+ 默认源可能没 8:
sudo apt install software-properties-common
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt update
sudo apt install openjdk-8-jdk
在 IDE 中:
JAVA_HOMEexport JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
systemctl edit jenkins
加:
[Service]
Environment="JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64"
java -version 是否符合程序要求JAVA_HOME 是否设置正确如果你愿意,可以告诉我:
我可以直接帮你给出精确命令。