2

因此,我在 javax.tools.JavaCompiler 的 api 和 cmd 行编译器之间遇到了一个烦人的小问题(它们是同一回事!)。我只是想对 javac 使用一个参数,例如:*-d C:\compiled\ C:\programs\HelloWorld.java *。这在 cmd 提示符下效果很好,但是我的代码失败了,说文件不存在。

public class Test {

    private static String programsDir = "C:\\programs\\";
    private static String compiledDir = "C:\\compiled\\";
    private static String fileName = "HelloWorld.java";

    public static void main(String[] args){

        JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();

        String arguments = "-d " + compiledDir + " " + programsDir + fileName ;
        compiler.run(System.in, System.out, System.err, arguments);
    }

输出是:

javac: file not found: -d C:\compiled\ C:\programs\HelloWorld.java
Usage: javac <options> <source files>
use -help for a list of possible options

但我可以将“-d C:\compiled\C:\programs\HelloWorld.java”剪切并粘贴到 javac 中。也就是说,javac -d C:\compiled\ C:programs\HelloWorld.java有效。

4

1 回答 1

2

run需要一个 args 列表,您是否尝试过:

String[] args = {"-d", compiledDir, programsDir + fileName};
compiler.run(System.in, System.out, System.err, args);
于 2013-02-13T07:08:55.380 回答