温馨提示×

CentOS编译Java需要哪些环境

小樊
40
2026-07-21 01:56:29
栏目: 编程语言

CentOS 上编译 Java(通常指 OpenJDK 或自定义 JDK)需要准备 编译环境、依赖库和引导 JDK。下面按 常见场景 给你一个完整说明。


一、编译 Java 常见场景

  1. 编译 OpenJDK(最常见)
  2. 编译 Java 项目(使用 JDK)
  3. 编译 JNI / C++ 调用 Java

下面重点讲 编译 OpenJDK,这是最复杂、最典型的情况。


二、编译 OpenJDK 所需环境(CentOS 7/8/Stream)

1️⃣ 基础编译工具

sudo yum groupinstall -y "Development Tools"

或(CentOS 8 / Stream):

sudo dnf groupinstall -y "Development Tools"

包含:

  • gcc
  • g++
  • make
  • autoconf
  • automake

2️⃣ 编译 OpenJDK 必需依赖

CentOS 7

sudo yum install -y \
    unzip zip \
    libXtst-devel libXt-devel libXrender-devel \
    libXrandr-devel libXi-devel \
    freetype-devel \
    cups-devel \
    alsa-lib-devel \
    fontconfig-devel \
    libffi-devel \
    wget \
    java-1.8.0-openjdk-devel

CentOS 8 / Stream

sudo dnf install -y \
    unzip zip \
    libXtst-devel libXt-devel libXrender-devel \
    libXrandr-devel libXi-devel \
    freetype-devel \
    cups-devel \
    alsa-lib-devel \
    fontconfig-devel \
    libffi-devel \
    wget \
    java-1.8.0-openjdk-devel

3️⃣ 引导 JDK(非常重要)

编译 JDK N 需要已安装 JDK N-1

编译目标 引导 JDK
OpenJDK 8 JDK 7
OpenJDK 11 JDK 10 / 11
OpenJDK 17 JDK 16 / 17
OpenJDK 21 JDK 20 / 21

最常用组合(推荐)

java-1.8.0-openjdk-devel   # 编译 OpenJDK 8/11
java-17-openjdk-devel      # 编译 OpenJDK 17

检查:

java -version
javac -version

三、编译 OpenJDK 示例(以 OpenJDK 11 为例)

1️⃣ 下载源码

git clone https://github.com/openjdk/jdk11u.git
cd jdk11u

2️⃣ 配置

bash configure \
  --with-boot-jdk=/usr/lib/jvm/java-1.8.0 \
  --with-debug-level=release

常见参数:

--with-boot-jdk
--with-debug-level=release | fastdebug | slowdebug
--disable-warnings-as-errors

3️⃣ 编译

make images

完成后:

cd build/linux-x86_64-normal-server-release/images/jdk
./bin/java -version

四、如果你只是编译 Java 程序(不是 JDK)

只需要:

sudo yum install -y java-1.8.0-openjdk-devel

编译:

javac HelloWorld.java
java HelloWorld

五、常见问题

❌ 错误:Boot JDK not found

✅ 解决:

sudo yum install java-1.8.0-openjdk-devel

❌ 错误:gcc: error: unrecognized command line option

✅ 原因:GCC 版本过低
✅ OpenJDK 17+ 建议 GCC ≥ 7


❌ 内存不足

export MAKEFLAGS="-j1"

六、总结(速查表)

需求 环境
编译 OpenJDK 开发工具 + 依赖库 + 引导 JDK
编译 Java 程序 JDK
编译 JNI JDK + gcc + C 头文件

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

  • ✅ CentOS 版本(7 / 8 / Stream)
  • ✅ 要编译哪个 JDK(8 / 11 / 17 / 21)

我可以给你 精确到命令级别 的编译方案。

0