のソースファイルを設定する方法がわかりませんcompilationTask
。
私はこれを試しました:
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
List<String> optionList = new ArrayList<String>(Arrays.asList("-d","build/classes"));
List<String> classes = new ArrayList<String>();
classes.add("src/Hello.java");
CompilationTask task = compiler.getTask(null, null, null, optionList, classes, null);
task.call();
しかし、次のエラーが発生します。
スレッド"main"の例外java.lang.IllegalArgumentException:有効なクラス名ではありません:src / Hello.java
もちろん、クラスの代わりにnullを指定すると、ソースファイルが指定されていないため、「ソースファイルがありません」というメッセージが表示されます。これまでのrun関数を使ってみJavaCompiler
ましたが、文字列引数でオプションを指定できませんでした(または方法がわかりません)。
解決策は次のとおりです。
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);
List<String> optionList = new ArrayList<String>(Arrays.asList("-d","build/classes"));
Iterable<? extends JavaFileObject> classes = fileManager.getJavaFileObjectsFromFiles(Arrays.asList(new File("src/Hello.java")));
CompilationTask task = compiler.getTask(null, null, null, optionList,null, classes);
task.call();