// 字符串形式的 需要动态生成的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();
Java动态生成代码,动态编译 并且加载到内存
最新推荐文章于 2024-05-03 02:13:51 发布