如何在命令行方式下编译一整个文件夹下的所有java文件?

我现在正在进行一个命令行方式程序的开发,现在遇到了要编译一个文件夹下的所有java文件的问题,注意这些文件还位于不同的子文件夹下,因为这些文件彼此之间的调用关系比较混乱,所以只能用将整个文件夹进行编译的方式,但是我并不知道javac如何才能编译整个文件夹下的所有子文件夹中的文件,希望有经历过的大虾能够帮下忙哈!

暂时提供一个编译类,如果有更好的方法再交流。

import java.io.File;import java.io.IOException;
import java.util.Scanner;

public class CompileJavaFiles {
private static Runtime r = Runtime.getRuntime();

/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {

Scanner scanner = new Scanner(System.in);
System.out.print("请输入待编译的文件夹路径:");
String path = scanner.nextLine();
File directory = new File(path);
if (null == directory || !directory.isDirectory()) {
System.out.println("指定的目录不存在.");
} else {
execute(directory);
System.out.println("全部编译完成.");
}
System.exit(0);
}

public static void execute(File file) throws IOException {

if (null != file) {
if (file.isDirectory()) {
File[] files = file.listFiles();
for (File f:files) {
execute(f);
}
} else if (file.isFile() && file.getName().endsWith(".java")) {
r.exec("javac " + file.getAbsolutePath());
System.out.println("正在编译 " + file.getAbsolutePath());
}
}
}

}

首先编译 CompileJavaFiles 文件,然后运行,试试看效果怎么样。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-03
cd mywork (不进入src源文件夹)
javac -sourcepath src src\*.java
(可以指定输出目录,javac -sourcepath src -d classes src\*.java)
第2个回答  2013-04-04
这个问题我也问过,根本没有任何可能的方式,最好的办法就是用eclipse的build啦!要不然真的没有很好的解决方法啊1
相似回答