温馨提示×

centos旧版java如何顺利编译

小樊
48
2026-09-24 13:42:24
栏目: 编程语言

在 CentOS 旧版本 上“顺利编译 Java(或 Java 项目)”通常会遇到 JDK 太旧 / 系统缺少依赖 / 工具链不兼容 等问题。下面按场景给你一套可行方案,基本能覆盖 90% 的情况。


一、先确认你“编译”的是什么

请先分清:

  1. 编译 Java 源码(javac)
  2. 编译 OpenJDK 源码(自己构建 JDK)
  3. 用 Maven / Gradle 编译 Java 项目

不同场景做法差别很大。


二、CentOS 旧版编译 Java 项目(最常见)

1️⃣ 安装合适的 JDK(非常关键)

旧 CentOS(如 6 / 7)自带 OpenJDK 往往太旧。

推荐方式(通用)

yum install -y java-1.8.0-openjdk-devel

或 Oracle JDK(手动):

rpm -ivh jdk-8uXXX-linux-x64.rpm

查看:

java -version
javac -version

2️⃣ 设置 JAVA_HOME(必须)

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

建议写入:

/etc/profile.d/java.sh

3️⃣ Maven / Gradle 编译

Maven

yum install -y maven
mvn clean package

如 Maven 太旧:

wget https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz

三、老项目在“新 JDK 上编不过”怎么办?

常见错误

  • Unsupported major.minor version
  • removals of javax.xml.bind

解决方案

✅ 用项目当时对应的 JDK 编译(最稳妥)

例如:

  • Java 6 项目 → JDK 6
  • Java 7 项目 → JDK 7
  • Java 8 项目 → JDK 8

不要试图用 JDK 11 编 Java 6 老项目。


四、在 CentOS 上编译 OpenJDK(高级)

1️⃣ 依赖(CentOS 7 示例)

yum groupinstall -y "Development Tools"
yum install -y \
  cups-devel \
  libXtst-devel \
  libXrender-devel \
  libXrandr-devel \
  alsa-lib-devel \
  freetype-devel \
  fontconfig-devel

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

编译 JDK N,需要 JDK N-1

例如:

  • 编 JDK 8 → 用 JDK 7
  • 编 JDK 11 → 用 JDK 10/11
export BOOT_JDK=/usr/lib/jvm/java-1.7.0-openjdk

3️⃣ configure + make

bash configure
make

五、CentOS 太老(如 6)的兜底方案

✅ 方案 A:用 Docker(强烈推荐)

docker run -it centos:6 bash

或

docker run -it maven:3.6-jdk-8 bash

✅ 方案 B:用新版 CentOS Stream / Rocky / Alma

老 CentOS 已 EOL,编译环境不稳定。


六、排错速查表

问题 原因 解决
javac: command not found 没装 devel 装 *-devel
Permission denied 权限问题 sudo 或 chmod
Unsupported class version JDK 不匹配 换 JDK
Could not resolve dependencies 源失效 换 Maven 镜像

七、你可以直接告诉我

为了给你精确步骤,你可以说:

  1. CentOS 版本(6 / 7 / 8?)
  2. 要编译什么(项目 / JDK / 老系统?)
  3. 报错信息(贴出来)

我可以直接给你可复制的命令。

0 踩