javax.tools.JavaCompiler“arguments”arg

时间:2013-02-13 07:05:41

标签: java compiler-construction arguments

所以我在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 有效。

1 个答案:

答案 0 :(得分:2)

run需要一个args列表,你试过了吗?

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