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;
}
用java語言編譯內存中java小程序,並將生成的.class文件保存在一個文件夾下。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.