我正在尝试加载在运行时生成编译的类。我可以用这段代码毫无问题地编译它们:
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);
List<File> sourceFileList = new ArrayList<File>();
sourceFileList.add(new File(sourceFile));
Iterable<? extends JavaFileObject> compilationUnits = fileManager.getJavaFileObjectsFromFiles(sourceFileList);
CompilationTask task = compiler.getTask(null, fileManager, null, null,null, compilationUnits);
但我不明白如何加载我编译的类(或编译的地方)以供后用。我尝试了几件事,例如:
Class type = ClassLoader.getSystemClassLoader().loadClass(className);
或者
ClassLoader loader = URLClassLoader.newInstance(new URL[] { myUrl }, getClass().getClassLoader()); //(URL?)
没有成功(我不明白这些......)。你能帮我或举一个简单的例子来做这件事,这样我就可以发展它吗?
提前致谢。