Debian Java编译流程是怎样的
小樊
39
2025-12-24 20:30:04
Debian 上编译 Java 的两条主线
- 主线一:编译你自己的 Java 应用(最常用)
- 主线二:从源码构建 OpenJDK(JDK 开发场景)
主线一 编译 Java 应用
- 安装 JDK 与构建工具
- 安装默认 JDK:sudo apt update && sudo apt install default-jdk
- 或指定版本(如 openjdk-11-jdk):sudo apt install openjdk-11-jdk
- 验证安装:java -version、javac -version
- 安装构建工具:sudo apt install maven 或 sudo apt install gradle
- 获取源码
- 示例:git clone https://github.com/your-repo/your-java-project.git
- 使用构建工具编译与打包
- Maven:在项目根目录执行 mvn clean package,产物通常在 target/ 目录
- Gradle:在项目根目录执行 gradle build,产物通常在 build/libs/ 目录
- 运行与常见产出
- 运行可执行 JAR:java -jar target/your-app.jar 或 java -jar build/libs/your-app.jar
- 可执行 Fat JAR(含依赖)
- Maven 使用 maven-assembly-plugin 或 maven-shade-plugin
- Gradle 使用 shadowJar 插件
- 多版本 JDK 管理
- 列出/切换版本:sudo update-alternatives --config java
- 设置 JAVA_HOME(可选,例如在 ~/.bashrc 中):export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64;export PATH=$JAVA_HOME/bin:$PATH;执行 source ~/.bashrc 生效
主线二 从源码构建 OpenJDK
- 安装依赖
- 基础工具:sudo apt-get update && sudo apt-get install build-essential git
- 引导 JDK(Boot JDK):例如 sudo apt-get install openjdk-11-jdk-headless
- 获取源码
- 示例:git clone https://github.com/openjdk/jdk.git
- 配置与编译(两种常见方式)
- 方式 A(推荐,使用 autoconf 脚本)
- 进入源码目录:cd jdk
- 配置:bash configure
- 编译:make images(或 make)
- 产物路径示例:build/linux-x86_64-normal-server-release/images/jdk
- 方式 B(使用 GN/Ninja)
- 创建构建目录:mkdir build && cd build
- 配置:gn build -Djava_home=/usr/lib/jvm/java-11-openjdk-amd64 -Djavac_home=/usr/lib/jvm/java-11-openjdk-amd64
- 编译:ninja -C out
- 验证与安装
- 验证产物:build/linux-x86_64-normal-server-release/images/jdk/bin/java -version
- 安装(可选):sudo ninja -C out install
- 提示
- 构建过程耗时较长,建议使用多核并行(如 make -j$(nproc))
- 具体配置与参数以所选 JDK 版本分支的官方文档为准
常见问题与排查要点
- 版本不匹配
- 源码所需 Java 版本 与已安装 JDK 版本 不一致会导致编译失败;请安装匹配的 Boot JDK 或切换 update-alternatives 版本
- 环境变量未生效
- 修改 ~/.bashrc 或 /etc/profile 后执行 source 使其生效;确认 JAVA_HOME/bin 在 PATH 中靠前
- 依赖缺失
- 构建工具未安装或网络仓库不可达会导致 mvn/gradle 失败;检查 maven/gradle 是否可用、仓库配置是否正确
- 产物路径与运行命令
- 确认 target/ 或 build/libs/ 下是否存在可运行 JAR;使用 java -jar 启动时确保 Main-Class 已正确配置