如何从命令行递归编译stacks包中的所有Java类?
递归编译stacks包下所有Java类的方案
以下几种方式可以帮你自动递归编译stacks包下的所有.java文件,无需手动逐个指定类文件:
1. 支持递归通配的Shell(如Bash、Zsh)
直接使用**通配符匹配所有子目录中的.java文件:
javac stacks/**/*.java
如果你的Bash版本默认未启用递归通配,先执行以下命令开启globstar选项再编译:
shopt -s globstar javac stacks/**/*.java
2. 跨Unix-like系统通用(用find命令)
通过find递归查找所有目标文件,一次性传递给javac编译:
find stacks -name "*.java" -exec javac {} +
-exec {} +会将找到的所有文件批量传给javac,比逐个执行更高效。
3. Windows环境适配
- CMD命令行:用
for /R遍历递归目录:
for /R stacks %f in (*.java) do javac "%f"
如果是在批处理脚本中,需将%f替换为%%f。
- PowerShell:通过递归获取文件对象执行编译:
Get-ChildItem -Path stacks -Recurse -Filter *.java | ForEach-Object { javac $_.FullName }
进阶方案:使用构建工具
如果后续会频繁添加类或处理依赖,推荐用Maven、Gradle这类构建工具。只需配置好项目结构,执行mvn compile(Maven)或gradle compileJava(Gradle)即可自动完成所有类的编译、依赖管理等工作,比手动操作javac更高效可靠。
内容的提问来源于stack exchange,提问作者idkusrname126
相关产品推荐
相关产品推荐

