javax.tools.JavaCompiler "arguments"arg

标签 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 有效。

最佳答案

run 需要一个参数列表,您尝试过吗:

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

关于javax.tools.JavaCompiler "arguments"arg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14848202/

相关文章:

java - 具有解码器问题的 Kafka Avro 消费者

java - 使用 DOM 解析器从 XML 文档创建 JTree

compiler-construction - Visual Studio Code 到底是什么?

c# - Mac OS X Mono ASP.NET和C#编译过程

haskell - AST 中具有不同类型注释的带注释递归数据类型

Python argparse : get an argument without parsing

java - 这个java字节转换是如何工作的

java - 静态最终长 serialVersionUID = 1L

python - 类,字典, self ,初始化,参数?

c++ - 将 char * 作为函数参数传递时出现意外行为