public class DynamicCompile {
private final static String PATH = ****;//根据实际情况填写路径
public static boolean compile(String id, String file_name, String file_content) throws IOException, ClassNotFoundException, NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, InstantiationException{
/*
* 编译内存中的java代码
* */
//1.创建保存的文件夹
int index = file_name.lastIndexOf(".java");
file_name = file_name.substring(0, index);
String class_path = PATH + id;
File file = new File(class_path);
if(!file.exists() && !file.isDirectory()) {
file.mkdir();
}
// 2.开始编译(<span style="font-family: Arial, Helvetica, sans-serif;">file_content就是内存中的java程序</span><span style="font-family: Arial, Helvetica, sans-serif;">)</span>
JavaCompiler javaCompiler = ToolProvider.getSystemJavaCompiler();
JavaFileObject fileObject = new CharSequenceJavaFileObject(file_name, file_content);
CompilationTask task = javaCompiler.getTask(null, null, null, Arrays.asList("-g", "-d", class_path), null, Arrays.asList(fileObject));
boolean result = task.call();
return result;
}