在 Ubuntu 上安装 Ja va 编译所需依赖

一、区分两类编译场景
动手之前,咱们得先搞清楚一件事:你打算编译什么?这直接决定了你需要准备哪些“家伙事儿”。
- 编译普通 Ja va 项目:这事儿相对简单。你只需要一个 JDK,它包含了编译器
ja vac和运行时环境ja va,就够了。 - 从源码构建 OpenJDK:这就复杂多了,堪称“硬核操作”。除了 JDK,你还得准备一堆系统依赖库,比如 FreeType、CUPS、X11 等等。更关键的是,你还需要一个“引导 JDK”——通常要求比你要构建的目标版本低一个主版本号。
二、编译普通 Ja va 项目的依赖安装
对于大多数开发者来说,第一个场景才是日常。下面咱们就按步骤来,保证你快速搞定。
- 更新索引并安装 JDK:以目前主流的 OpenJDK 17 为例(当然,你也可以换成 8、11 或 21 等版本)。
- 打开终端,执行这条命令:
sudo apt update && sudo apt install -y openjdk-17-jdk
- 打开终端,执行这条命令:
- 验证安装:装完可不能凭感觉,得验明正身。
- 分别运行
ja va -version和ja vac -version,看看版本信息是否正常输出。
- 分别运行
- 可选:配置 JA VA_HOME:有些工具依赖这个环境变量,如果系统没自动设置,咱们就手动来。
- 先找到 JDK 的安装路径:
readlink -f “$(which ja va)”。它通常藏在/usr/lib/jvm/目录下。 - 然后将其写入环境变量:
echo ‘export JA VA_HOME=/usr/lib/jvm/ja va-17-openjdk-amd64’ >> ~/.bashrc && source ~/.bashrc
- 先找到 JDK 的安装路径:
- 可选:安装构建工具:现代 Ja va 项目离不开 Ma ven 或 Gradle。
- 安装命令很简单:
sudo apt install -y ma ven或sudo apt install -y gradle。 - 同样,用
mvn -version或gradle -version验证一下。
- 安装命令很简单:
三、从源码构建 OpenJDK 的依赖安装
如果你想深入 JVM 内部,或者有定制化需求,从源码构建 OpenJDK 是必经之路。这个过程就像搭一个精密仪器,缺一个零件都不行。
- 安装基础编译工具与依赖库:这是最繁琐但必须的一步。以下命令适用于 Ubuntu 20.04/22.04 等常见版本。
- 准备好,这是一条长长的命令:
sudo apt update && sudo apt install -y build-essential autoconf zip libfreetype6-dev libcups2-dev libfontconfig1-dev libx11-dev libxext-dev libxrender-dev libxrandr-dev libxtst-dev libxt-dev libasound2-dev libffi-dev
- 准备好,这是一条长长的命令:
- 准备 Bootstrap JDK:这是构建过程的“起点”。记住一个原则:用它来构建比它高一个主版本的 JDK。比如:
- 要构建 OpenJDK 12,你需要 JDK 11:
sudo apt install -y openjdk-11-jdk - 要构建 OpenJDK 16,你可能需要 JDK 15。务必根据目标版本灵活选择。
- 要构建 OpenJDK 12,你需要 JDK 11:
- 获取源码并配置与编译:环境备齐,就可以开工了。以构建 OpenJDK 12 为例:
- 配置构建参数:
bash configure --enable-debug --with-jvm-variants=server - 开始编译(
nproc会自动检测你的 CPU 核心数,全力编译):make -j"$(nproc)"
- 配置构建参数:
- 常见排错要点:这条路可能不会一帆风顺,几个常见的坑帮你标出来:
- 如果配置时提示缺少
fontconfig,别忘了安装libfontconfig1-dev。 - 如果你在 VMware 的共享文件夹里编译,可能会遇到无法创建符号链接的错误。解决办法是把源码移到本地的 ext4 分区再编译。
- 如果 gcc/g++ 版本不兼容,可能需要安装特定版本(比如 gcc-7)并更新软链接。
- 如果配置时提示缺少
四、一键安装脚本示例
为了方便,这里提供两条整合好的命令。你可以直接复制执行,但务必理解每条命令在做什么。
- 普通 Ja va 项目(安装 OpenJDK 17):
sudo apt update && sudo apt install -y openjdk-17-jdk && ja va -version && ja vac -version
- OpenJDK 12 构建环境(含 Bootstrap JDK 11 与全部依赖):
sudo apt update && sudo apt install -y build-essential autoconf zip libfreetype6-dev libcups2-dev libfontconfig1-dev libx11-dev libxext-dev libxrender-dev libxrandr-dev libxtst-dev libxt-dev libasound2-dev libffi-dev openjdk-11-jdk && ja va -version。
