所以我在 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/