Ubuntu 上 Java 编译出错的排查与解决
一 快速自检清单
二 常见错误与对应修复
| 症状 | 可能原因 | 修复建议 |
|---|---|---|
| 提示“Command ‘javac’ not found” | 未安装 JDK | 安装 JDK:sudo apt install openjdk-11-jdk |
| “Error: Could not find or load main class …” | 类名与文件名不一致;或运行未从正确目录执行;或类路径不含当前目录 | 确保文件名与公共类名一致;在包含 .class 的目录执行;运行时用 java 完整类名(包名+类名) |
| “package xxx does not exist” | 缺少依赖 JAR 或类路径未包含依赖 | 使用 -cp 添加依赖,多个用分隔符(Linux 用 :):javac -cp .:lib/a.jar:lib/b.jar Your.java |
| “cannot access … (wrong name: …)” | 文件名与声明类名不一致(含大小写) | 重命名文件与公共类名完全一致 |
| “Unsupported class file major version XX” | 编译与运行 JDK 版本不匹配 | 统一 javac 与 java 版本,或安装对应版本 JDK |
| 编译大型项目内存不足(如 AOSP) | JVM 堆内存不足 | 设置 MAVEN_OPTS=“-Xms4096m -Xmx4096m” 后再编译 |
| 编码相关错误(中文乱码) | 源文件编码与编译器预期不一致 | 使用 -encoding UTF-8:javac -encoding UTF-8 Your.java |
三 一条可用的命令模板
四 仍未解决时如何高效求助