概述:
Java的动态编译就是在运行期直接编译.java文件,执行.class,并且能够获得相关的输入输出,甚至还能监听相关的事件。
步骤:
1、创建或自动生成.java文件
2、调用JavaCompiler获取编译器,该类允许开发人员编译java文件为class文件
JavaCompiler compiler =ToolProvider.getSystemJavaCompiler();
3、获取文件管理器StandardJavaFileManager,用来管理要编译的.java文件。getStandardFileManager有3个参数,分别代表监听器、语言环境、字符集
StandardJavaFileManager fileManger = compiler.getStandardFileManager(null, null, null);
4、获取表示给定文件的文件对象
Iterable unils = fileManger.getJavaFileObjects(fileName)
5、获取编译任务的future接口CompilationTask,当调用它的call方法时,开始编译
CompilationTask t = compiler.getTask(null, fileManger, null, null, null, unils);
t.call();
6、调用URLClassLoader将编译的文件load内存,其中需要知道文件的位置,用URL记录,其中“file:/”表示本地文件。
URL[] urls = new URL[]{new URL("file:/"+System.getPrope