在 Ubuntu 上遇到 Java 编译兼容问题,通常不是系统本身的问题,而是 JDK 版本、编译参数、依赖库或字符编码 不一致导致的。下面按常见场景给你一套排查和解决思路。
java -version
javac -version
⚠️ 注意:
java 是运行版本javac 是编译版本Ubuntu 常见装了多个 JDK:
ls /usr/lib/jvm/
切换默认 JDK:
sudo update-alternatives --config java
sudo update-alternatives --config javac
即使你用的是 JDK 17,也可以编译成 JDK 8 兼容:
javac -source 8 -target 8 Hello.java
⚠️ 更推荐用:
javac --release 8 Hello.java
说明:
用高版本 JDK 编译,低版本 JVM 运行
✅ 解决:
--release说明:
✅ 解决:
javac -cp "lib/*" Main.java
或用 Maven / Gradle(推荐)
Ubuntu 默认 UTF-8,Windows 常是 GBK
✅ 解决:
javac -encoding UTF-8 Main.java
sudo apt install maven
pom.xml 指定:
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
编译:
mvn clean package
curl -s "https://get.sdkman.io" | bash
source ~/.sdkman/bin/sdkman-init.sh
sdk install java 8.0.392-zulu
sdk use java 8.0.392-zulu
javac -version 和 java -version 一致--release 指定版本-encoding UTF-8你可以直接把:
java -version发出来,我可以帮你 精准定位是哪一类兼容问题。