确保 Ubuntu 上 Java 编译的准确性
一 环境一致性与版本控制
sudo apt install openjdk-17-jdk 或 openjdk-11-jdk。JAVA_HOME 指向 JDK 安装目录(而非 JRE),并将 $JAVA_HOME/bin 置于 PATH 前列;修改后执行 source ~/.bashrc 使配置生效。java -version 与 javac -version 输出,确保二者版本一致且均为 JDK。sudo apt update && sudo apt upgrade,减少因系统库差异导致的构建不确定性。二 构建流程与命令行准确性
javac HelloWorld.javajava HelloWorld(不要带 .class 后缀)package com.example;,文件必须位于 com/example/HelloWorld.java,编译:javac com/example/HelloWorld.java,运行:java com.example.HelloWorld。javac -d out src/**/*.java(先创建 out 目录)。-cp 或 -classpath 指定依赖,类路径分隔符为 冒号 :;示例:javac -cp "lib/*:." MyApp.java,运行:java -cp "lib/*:." MyApp。-g;避免过早优化(不使用 -O2/-O3 于开发/测试构建);必要时显式指定 -source 与 -target 与项目要求一致(如 -source 11 -target 11)。三 依赖管理与构建工具
-cp 的疏漏与路径错误。pom.xml/build.gradle 中显式声明依赖的 版本号 与 范围(scope),并执行 mvn clean compile 或 gradle clean build 以获得可复现构建。四 代码与工程结构校验
.class 文件与输出目录,防止“旧类干扰新构建”。五 常见错误快速排查清单
java -version 与 javac -version,确保二者一致且为 JDK;必要时切换 JAVA_HOME 指向正确版本。-cp 或路径分隔符错误(应使用 :);多模块项目需正确设置模块路径或聚合依赖。package X 但目录结构不匹配,或运行未使用全限定类名。JAVA_HOME 指向 JRE 或未加入 PATH,导致调用到错误 javac。MAVEN_OPTS="-Xms4096m -Xmx4096m" 或相应 Gradle 内存参数。