温馨提示×

ubuntu编译java版本怎么选

小樊
45
2026-10-01 11:22:18
栏目: 编程语言

在 Ubuntu 上“选 Java 版本来编译 Java 程序”通常包含 两个层面:

  1. 系统里装了哪些 JDK
  2. 编译/运行时具体用哪一个(javac / java 版本)

下面按常见场景说明。


一、查看 Ubuntu 已安装的 Java 版本

java -version
javac -version

如果你装了多个 JDK,可以查看:

ls /usr/lib/jvm/

二、安装常见 Java 版本(Ubuntu)

OpenJDK(推荐)

# 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

三、切换系统默认 Java 版本(update-alternatives)

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

四、编译时“指定版本”(推荐做法)

1️⃣ 直接用某个 JDK 的 javac

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

适合脚本或 CI。


2️⃣ Maven 指定 Java 版本(最常见)

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


3️⃣ Gradle 指定 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)

✅ 原则:

  • 编译版本 ≥ 运行版本
  • 不要低版本 JDK 编译高版本代码

六、常见坑

❌ javac 17 编出来,跑在 java 8 → 报错
❌ JAVA_HOME 没设,Maven 用错 JDK
❌ Ubuntu 默认 java 和 javac 不一致


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

  • Ubuntu 版本
  • 项目类型(Maven / Gradle / 裸 javac)
  • 目标运行环境

我可以给你最合适的具体配置方案。

0 踩