在 CentOS 上“编译 Java”通常指 编译 OpenJDK 源码,而不是写 Java 程序。不同 CentOS 版本能编译的 JDK 版本受 gcc、glibc、make、boot JDK 等影响。下面按 CentOS 版本 + JDK 版本给你一个实用对照说明。
| JDK 版本 | 状态 | 说明 |
|---|---|---|
| JDK 8 | ✅ 原生支持 | CentOS 7 官方主力 |
| JDK 11 | ✅ 支持 | 需要 devtoolset |
| JDK 17 | ⚠️ 困难 | gcc / glibc 版本偏低 |
| JDK 21 | ❌ 基本不可行 | glibc 2.17 太低 |
yum install -y java-1.8.0-openjdk-devel
yum install -y gcc-c++ make
如需 JDK 11:
yum install -y devtoolset-11
scl enable devtoolset-11 bash
| JDK 版本 | 状态 |
|---|---|
| JDK 8 | ✅ |
| JDK 11 | ✅ 原生 |
| JDK 17 | ✅ 推荐 |
| JDK 21 | ⚠️ 可行 |
dnf install -y java-11-openjdk-devel
dnf install -y gcc-c++ make
| JDK 版本 | 状态 |
|---|---|
| JDK 11 | ✅ |
| JDK 17 | ✅ 原生 |
| JDK 21 | ✅ 推荐 |
| JDK 22+ | ✅ |
dnf install -y java-17-openjdk-devel
dnf install -y gcc-c++ make
编译 JDK N,必须使用 JDK N-1
| 编译目标 | Boot JDK |
|---|---|
| JDK 8 | JDK 7 |
| JDK 11 | JDK 10 / 11 |
| JDK 17 | JDK 16 / 17 |
| JDK 21 | JDK 20 / 21 |
./configure --with-boot-jdk=/usr/lib/jvm/java-17-openjdk
make images
| 场景 | 说明 |
|---|---|
| 运行 Java | 任意版本 |
| 编译 Java 程序 | 只要 JDK 支持 |
| 编译 OpenJDK | 受系统工具链限制 |
✅ 稳定组合推荐
❌ 不推荐
如果你愿意,可以告诉我:
我可以给你 精确的编译步骤和依赖清单。