温馨提示×

debian多版本java怎编译

小樊
49
2026-09-29 06:49:31
栏目: 编程语言

在 Debian 上如果系统里装了多个 Java 版本(比如 OpenJDK 8 / 11 / 17),编译时关键点是:指定用哪一个 javac,常见有 3 种方式。


一、查看已安装的 Java 版本

ls /usr/lib/jvm/

通常类似:

java-8-openjdk-amd64
java-11-openjdk-amd64
java-17-openjdk-amd64

查看当前默认:

java -version
javac -version

二、方式 1:用 update-alternatives 切换(推荐)

1️⃣ 注册 / 查看 Java

sudo update-alternatives --config java
sudo update-alternatives --config javac

选择对应编号即可。

2️⃣ 然后直接编译

javac Main.java

✅ 适合:整个终端会话都用同一个 Java 版本


三、方式 2:编译时直接指定路径(最稳妥)

不需要切换系统默认:

/usr/lib/jvm/java-11-openjdk-amd64/bin/javac Main.java

运行:

/usr/lib/jvm/java-11-openjdk-amd64/bin/java Main

✅ 适合:不同项目用不同 JDK


四、方式 3:用环境变量(脚本/CI 常用)

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

javac -version
javac Main.java

可写进:

  • ~/.bashrc
  • 项目 build.sh

五、Maven / Gradle 多版本编译

Maven

JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 mvn package

或在 pom.xml:

<properties>
  <maven.compiler.source>11</maven.compiler.source>
  <maven.compiler.target>11</maven.compiler.target>
</properties>

Gradle

JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 ./gradlew build

六、常见坑

❌ 用 java 17 编译,却用 java 8 运行
✅ 编译和运行 JDK 大版本尽量一致

❌ Debian 默认 javac 和实际 java 不一致
✅ 用 update-alternatives --config 检查


如果你愿意,可以告诉我:

  • Debian 版本
  • Java 版本列表
  • 是命令行 / Maven / Gradle

我可以给你精准命令。

0 踩