Я пытаюсь использовать JavaCompiler.run() для выполнения динамически генерируемых исходных файлов. Ниже моя программа, когда я запускаю его я получил на System.err:Файл javac не найден при вызове JavaCompiler.run()
Javac: файл не найден: C: .. bla..bla .. \ тест \ A.java C: .. bla..bla .. \ тест \ B.java C: .. bla..bla .. \ тест \ C.java использование: Javac использование -помощь для списка возможных вариантов
файловсписок не собираются, но Eveything был составлен, когда я положил в командной строке
Javac C: .. bla..bla .. \ тест \ A.java C: .. bla..bla .. \ тест \ B.jav С: .. bla..bla .. \ тест \ A.java
Вот полный исходный код
// define the classes
String stringA = "package test;" + " "
+ "public class A { "
+ "public A() { B b = new B(); b.b(); }" + " "
+ "public static boolean a() { return true;}" + " "
+ "}";
String stringB = "package test;" + " "
+ "public class B { "
+ "public B() { }" + " "
+ "public boolean b() { return new C().c(); }" + " "
+ "}";
String stringC = "package test;" + " "
+ "public class C { "
+ "public C() { }" + " "
+ "public boolean c() { return A.a(); }" + " "
+ "}";
// Save sources in .java files then compile
String pathA = store("test/A.java", stringA);
String pathB = store("test/B.java", stringB);
String pathC = store("test/C.java", stringC);
StringBuilder pathBuilder = new StringBuilder();
pathBuilder.append(pathA);
pathBuilder.append(" ");
pathBuilder.append(pathB);
pathBuilder.append(" ");
pathBuilder.append(pathC);
String files = pathBuilder.toString();
// run compiler
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
compiler.run(null, null, null, files);
...
Магазин (имя файла, источник) сохраняет исходный файл и вернуть полный путь к сохраненному файлу.