温馨提示×

centos多版本java如何编译

小樊
35
2026-10-09 06:10:11
栏目: 编程语言

在 CentOS 上如果系统里安装了 多个 Java 版本(如 JDK 8、JDK 11、JDK 17),可以通过 指定 JAVA_HOME + 使用具体 javac 或 alternatives 来管理编译版本。下面按常见场景说明。


一、查看已安装的 Java 版本

ls /usr/lib/jvm/

常见结果:

java-1.8.0-openjdk
java-11-openjdk
java-17-openjdk

二、方式一:临时指定版本编译(最常用 ✅)

1️⃣ 指定 JAVA_HOME 和 PATH

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
export PATH=$JAVA_HOME/bin:$PATH

2️⃣ 验证版本

java -version
javac -version

3️⃣ 编译 Java 程序

javac HelloWorld.java
java HelloWorld

✅ 只对当前终端有效


三、方式二:直接使用具体 javac 路径(推荐脚本使用)

/usr/lib/jvm/java-17-openjdk/bin/javac Main.java
/usr/lib/jvm/java-17-openjdk/bin/java Main

适合:

  • CI/CD
  • 脚本
  • 多项目不同 JDK

四、方式三:使用 alternatives 切换系统默认 Java(影响全局)

1️⃣ 注册 Java 版本

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

2️⃣ 切换版本

alternatives --config java
alternatives --config javac

✅ 影响整个系统(不推荐生产混用)


五、方式四:Maven / Gradle 指定 JDK(推荐)

Maven

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>

Gradle

./gradlew build -Dorg.gradle.java.home=/usr/lib/jvm/java-17-openjdk

六、推荐方案总结

场景 推荐方式
临时测试 export JAVA_HOME
脚本/自动化 直接指定 javac 路径
系统统一 alternatives
项目级 Maven / Gradle

如果你能告诉我:

  • CentOS 版本(7 / 8 / Stream)
  • 是否用 Maven / Gradle
  • 是否同一项目多 JDK

我可以给你 更精确的配置示例。

0 踩