我目前有这个代码:
private void compile(){
List<File> files = getListOfJavaFiles();
//JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
//compiler.run(null, null, null, srcDirectory.getPath()+"/Main.java");
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);
Iterable<? extends JavaFileObject> compilationUnits1 =
fileManager.getJavaFileObjectsFromFiles(files);
List<String> optionList = new ArrayList<String>();
// set compiler's classpath to be same as the runtime's
optionList.addAll(Arrays.asList("-classpath",System.getProperty("java.class.path")));
//need to add options here.
compiler.getTask(null, fileManager, null, optionList, null, compilationUnits1).call();
//compiler.run(null, null, null, srcDirectory.getPath()+"/Main.java");
// fileManager.close();
}
但是我现在被困住了,试图让它真正运行已编译的文件。我在控制台中没有看到任何输出,但是在我成功编译的 Main.java 文件中(我可以看到 .class 文件),我输入了 "System.out.println("Main class is running"); ,所以我希望在运行应用程序时看到这个。