Java程序动态编译Java源文件
最近接触到公司一个项目,需要将生成的源码动态编译,记录下学习过程。 先贴出官网推荐写法: JavaCompiler.CompilationTask getTask(Writer out, JavaFileManager fileManager, DiagnosticListener<? super JavaFileObject> diagnosticListener, Iterable options, Iterable classes, Iterable<? extends JavaFileObject> compilationUnits) 参数:out - 用于来自编译器的其他输出的 Writer;如果为 null,则使用 System.err fileManager - 文件管理器;如果为 null,则使用编译器的标准文件管理器 标准文件管理器有两个用途: diagnosticListener - 诊断侦听器;如果为 null,则使用编译器的默认方法报告诊断信息 options - 编译器选项; null 表示没有选项 classes - 类名称(用于注释处理), null 表示没有类名称 compilationUnits - 要编译的编译单元; null 表示没有编译单元 Files[] files1 = …; // input for first compilation