在 Ubuntu 上“选 Java 版本来编译 Java 程序”通常包含 两个层面:
下面按常见场景说明。
java -version
javac -version
如果你装了多个 JDK,可以查看:
ls /usr/lib/jvm/
# Java 8
sudo apt install openjdk-8-jdk
# Java 11(LTS,最常用)
sudo apt install openjdk-11-jdk
# Java 17(LTS,新项目推荐)
sudo apt install openjdk-17-jdk
# Java 21(最新 LTS)
sudo apt install openjdk-21-jdk
sudo update-alternatives --config java
sudo update-alternatives --config javac
终端会列出类似:
* 0 /usr/lib/jvm/java-17-openjdk-amd64
1 /usr/lib/jvm/java-11-openjdk-amd64
2 /usr/lib/jvm/java-8-openjdk-amd64
输入编号即可切换。
✅ 切换后:
java -version
javac -version
/usr/lib/jvm/java-11-openjdk-amd64/bin/javac Main.java
适合脚本或 CI。
pom.xml:
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
或:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>17</source>
<target>17</target>
</configuration>
</plugin>
⚠️ Maven 使用的 Java 版本 = 你运行 mvn 时的 java
java {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
或:
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
| 场景 | 推荐 |
|---|---|
| 新项目 | Java 17 / 21(LTS) |
| 老系统维护 | Java 8 / 11 |
| Spring Boot 3 | Java 17+ |
| 大数据(Hadoop) | Java 8 / 11 |
| Android | Java 8 / 11(按 SDK) |
✅ 原则:
❌ javac 17 编出来,跑在 java 8 → 报错
❌ JAVA_HOME 没设,Maven 用错 JDK
❌ Ubuntu 默认 java 和 javac 不一致
如果你愿意,可以告诉我:
我可以给你最合适的具体配置方案。