Ubuntu Java编译最佳实践是什么
导读:Ubuntu Java编译最佳实践 一 环境准备与版本选择 使用系统包管理器安装OpenJDK,优先选择LTS版本(如OpenJDK 17或OpenJDK 21),命令:sudo apt update && sudo ap...
Ubuntu Java编译最佳实践
一 环境准备与版本选择
- 使用系统包管理器安装OpenJDK,优先选择LTS版本(如OpenJDK 17或OpenJDK 21),命令:sudo apt update & & sudo apt install openjdk-17-jdk。如需特定版本,可安装对应的openjdk-11-jdk等。
- 验证安装:java -version、javac -version 均应返回有效版本信息。
- 多版本并存时使用 update-alternatives 管理默认 Java,便于切换:
- 查看/切换:sudo update-alternatives --config java
- 同理可配置 javac
- 设置 JAVA_HOME(推荐在用户级配置,如 ~/.bashrc 或 /etc/environment):
- 示例:export JAVA_HOME=“/usr/lib/jvm/java-17-openjdk-amd64”
- 并将 $JAVA_HOME/bin 加入 PATH
- 建议做法:在 CI 或生产环境显式指定 JDK 版本,避免“默认 JDK”变更引入不确定性。
二 构建工具选择与标准流程
- 小项目或教学示例:直接使用 javac
- 编译:javac -d out src/(将 .java 编译到 out 目录)
- 运行:java -cp out your.main.Class
- 常规项目:使用 Maven 或 Gradle 管理依赖、编译、测试与打包,减少手工类路径与重复配置。
- Maven 常用命令与约定
- 安装:sudo apt install maven
- 编译:mvn compile;打包:mvn package(产物在 target/,如 xxx-1.0-SNAPSHOT.jar)
- 常用插件:
- maven-compiler-plugin 统一 source/target(如 1.8/11/17/21)
- maven-jar-plugin 配置可执行 JAR 的 Main-Class
- Gradle 常用命令与约定
- 安装:sudo apt install gradle
- 初始化:gradle init --type java-application
- 构建:gradle build(产物在 build/libs/)
- 在 build.gradle 中设置 sourceCompatibility、repositories { mavenCentral() } 、dependencies 与 application/mainClassName
- 实践要点
- 始终在 项目根目录执行构建(存在 pom.xml 或 build.gradle)
- 将编译与测试纳入流水线,确保每次变更可重复构建与测试
三 打包与可执行 JAR
- 可执行 JAR 的关键是在 MANIFEST.MF 中声明 Main-Class。
- Maven 方式
- 在 pom.xml 配置 maven-jar-plugin:
- 设置 com.example.App
- 构建:mvn clean package,运行:java -jar target/xxx-1.0-SNAPSHOT.jar
- 在 pom.xml 配置 maven-jar-plugin:
- Gradle 方式
- 在 build.gradle 的 jar 块中设置 manifest { attributes ‘Main-Class’: mainClassName }
- 构建:gradle clean build,运行:java -jar build/libs/xxx-1.0-SNAPSHOT.jar
- 手动方式(不推荐用于复杂项目)
- 编译到 out:javac -d out src/com/example/*.java
- 创建 MANIFEST.MF:
- 内容:Manifest-Version: 1.0 与 Main-Class: com.example.App
- 打包:jar cfm my-app.jar MANIFEST.MF -C out .
- 运行:java -jar my-app.jar
- 建议:优先使用构建工具生成可执行 JAR,减少手工错误。
四 多版本并存与切换
- 使用 update-alternatives 管理 java/javac 的默认版本,命令:sudo update-alternatives --config java(同法配置 javac)。
- 在构建脚本或 CI 中显式设置 JAVA_HOME 指向所需 JDK 安装路径,避免依赖系统“默认”。
- 如需全局环境,可在 /etc/environment 设置 JAVA_HOME 并导出到 PATH;个人环境建议在 ~/.bashrc 中设置,便于不同用户与不同项目使用不同版本。
五 常见问题与排查要点
- “命令未找到”类问题:确认已安装 JDK(而非仅 JRE),并正确设置 PATH 与 JAVA_HOME。
- 多版本冲突:用 update-alternatives --config java 检查当前默认版本,确保与项目要求一致。
- 编译或运行报“找不到主类”:检查包声明与目录结构是否匹配,运行时应使用全限定类名(如 com.example.App),而非文件名。
- 依赖缺失或版本不一致:使用 Maven/Gradle 管理依赖,避免手动拷贝 JAR。
- 需要调试符号或定位 JVM 问题时,可在需要自行构建 OpenJDK 的场景下使用 –enable-debug 获取带调试信息的构建产物(一般应用开发无需自行编译 JDK)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu Java编译最佳实践是什么
本文地址: https://pptw.com/jishu/766579.html
