在 Ubuntu 下“批量编译 Java”通常有以下几种常见场景,我按最常用 → 进阶给你说明,你可以直接照抄命令。
.java 文件javac *.java
✅ 适合:所有 .java 都在同一个目录、无包结构
find(最常用)find . -name "*.java" > sources.txt
javac -d out @sources.txt
说明:
find .:递归查找sources.txt:源码列表-d out:编译输出到 out 目录javac -d out $(find . -name "*.java")
⚠️ 文件特别多时可能报 “参数过长”,推荐用方法 1
假设结构:
src/com/example/Main.java
src/com/example/Util.java
find src -name "*.java" > sources.txt
javac -d bin @sources.txt
运行:
java -cp bin com.example.Main
javac -d out src/**/*.java
⚠️ 依赖 shell 支持(bash 4+)
javac -d out \
src/main/java/*.java \
src/utils/java/*.java
或用列表文件:
javac -d out @filelist.txt
filelist.txt 示例:
src/main/java/Main.java
src/utils/java/Util.java
mvn compile
gradle build
✅ 自动处理依赖、批量编译、结构清晰
❌ 找不到类
→ 检查 -cp 和 -d
❌ 包名和目录不一致
→ package com.xxx; 必须对应 com/xxx/
❌ 编码问题
javac -encoding UTF-8 *.java
| 场景 | 命令 |
|---|---|
| 单目录 | javac *.java |
| 整个项目 | find . -name "*.java" > l; javac -d out @l |
| 正式项目 | mvn / gradle |
如果你愿意,可以告诉我:
我可以给你完全定制的编译方案。