如何使用java代码在其他文件夹中编译java文件?

时间:2015-07-18 00:40:18

标签: java process compilation javac

我正在尝试使用Java的

Process p = Runtime.getRuntime().exec(command); 

在其他文件夹中编译 .java文件,但它不起作用 我的 Main.class 位于 a 文件夹中,所有 .java文件位于 a / test 文件夹中。< / p>

Main.class是:

public class Main{
    public static void main( String[] args )
                throws IOException,InterruptedException{
        String line ="";
        String command = "javac test/*.java";
        Process pro = Runtime.getRuntime().exec(command);
        BufferedReader in = new BufferedReader(
                new InputStreamReader( pro.getInputStream()));
        while ((line = in.readLine()) != null) {
            System.out.println(line);
        }
        BufferedReader er = new BufferedReader(
                new InputStreamReader( pro.getErrorStream()));
        while ((line = er.readLine()) != null) {
            System.out.println(line);
        }
    }
}

错误流显示:

javac: file not found: test/*.java

为什么会这样?文件夹测试中有一些java文件

1 个答案:

答案 0 :(得分:1)

  1. 在这种情况下,Java不能使用*作为通配符以及shell。 这意味着您将转换* - &gt;手动列出file_names并为每个特定文件执行exec()。

  2. 还要注意类路径。如果您运行此类窗体IDE,则类路径可能与您预期的不同(放置类的文件夹)。