javax.tools.JavaCompiler "аргументы"arg
Так что я столкнулся с раздражающей небольшой проблемой между API для javax.tools.JavaCompiler и компилятором строки cmd (что одно и то же!). Я просто хочу использовать аргумент для javac вроде: * -d C: \ compiled \ C: \ Programs\HelloWorld.java *. Это прекрасно работает в командной строке, но мой код не работает, говоря, что файл не существует.
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 ответ
Решение
run
ожидает список аргументов, вы пробовали:
String[] args = {"-d", compiledDir, programsDir + fileName};
compiler.run(System.in, System.out, System.err, args);