使用JavaCompile进行编译,代码很简单
/**
* <p>
* 编译Java文件
* </p>
*
* @param path
* 目录
*/
public static void compileFile(List<String> files) {
try {
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<JavaFileObject>();
StandardJavaFileManager fileManager = compiler.getStandardFileManager(
diagnostics, null, Charset.forName("UTF-8"));
// 每个文件被保存在一个从JavaFileObject继承的类中
Iterable<? extends JavaFileObject> compilationUnits = fileManager
.getJavaFileObjectsFromStrings(files);
JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager,
diagnostics, null, null, compilationUnits);
// 编译
<span style="white-space:pre"> </span>task.call();
fileManager.close();
} catch (Exception e) {
e.printStackTrace();
}
}