Java動態生成代碼,動態編譯 並且加載到內存

//  字符串形式的 需要動態生成的Java文件 
String src = " package com........";
// 臨時生成本地java文件
String fileName = "d:/src/com/test/***.java";
File f = new File(fileName);
FileWriter fw = new FileWriter(f);
fw.write(src);
fw.flush();
fw.close();
// 編譯生成的Java文件
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager fileMgr = compiler.getStandardFileManager(null, null, null);
Iterable units = fileMgr.getJavaFileObjects(fileName);
CompilationTask t = compiler.getTask(null, fileMgr, null, null, null, units);
t.call();
fileMgr.close();
// 加載到內存
URL[] urls = new URL[] {new URL("file:/" + "d:/src/")};
URLClassLoader ul = new URLClassLoader(urls);
Class c = ul.loadClass("com.test.***");

// 使用反射 創建實例
Constructor ctr = c.getConstructor();
Object m = ctr.newInstance();




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章