在 CentOS 上如果系统里安装了 多个 Java 版本(如 JDK 8、JDK 11、JDK 17),可以通过 指定 JAVA_HOME + 使用具体 javac 或 alternatives 来管理编译版本。下面按常见场景说明。
ls /usr/lib/jvm/
常见结果:
java-1.8.0-openjdk
java-11-openjdk
java-17-openjdk
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
export PATH=$JAVA_HOME/bin:$PATH
java -version
javac -version
javac HelloWorld.java
java HelloWorld
✅ 只对当前终端有效
/usr/lib/jvm/java-17-openjdk/bin/javac Main.java
/usr/lib/jvm/java-17-openjdk/bin/java Main
适合:
alternatives --install /usr/bin/java java /usr/lib/jvm/java-8-openjdk/bin/java 1
alternatives --install /usr/bin/java java /usr/lib/jvm/java-11-openjdk/bin/java 2
alternatives --install /usr/bin/java java /usr/lib/jvm/java-17-openjdk/bin/java 3
alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-8-openjdk/bin/javac 1
alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-11-openjdk/bin/javac 2
alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-17-openjdk/bin/javac 3
alternatives --config java
alternatives --config javac
✅ 影响整个系统(不推荐生产混用)
mvn clean package -Dmaven.compiler.source=11 -Dmaven.compiler.target=11
或在 pom.xml:
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
./gradlew build -Dorg.gradle.java.home=/usr/lib/jvm/java-17-openjdk
| 场景 | 推荐方式 |
|---|---|
| 临时测试 | export JAVA_HOME |
| 脚本/自动化 | 直接指定 javac 路径 |
| 系统统一 | alternatives |
| 项目级 | Maven / Gradle |
如果你能告诉我:
我可以给你 更精确的配置示例。