本示例使用JDK 1.6中引入的Java Compiler API来以编程方式编译Java类。在这里,我们将编译Hello.java。编译过程可以通过获得可以开始JavaCompiler从ToolProvider.getSystemJavaCompiler()。
编译的最简单方法是调用run()编译器的方法,并将前三个参数传递给nullvalue。这三个参数将使用默认的System.in,System.out和System.err。最后一个参数是要编译的Java类的文件。
在编译过程中发生错误时,将返回非零结果代码。完成编译过程后,您将拥有Hello.class使用该javac命令进行编译的权限。
package org.nhooo.example.tools; import javax.tools.JavaCompiler; import javax.tools.ToolProvider; public class CompileHello { public static void main(String[] args) { System.out.println(System.getProperty("user.dir")); JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); int result = compiler.run(null, null, null, "nhooo-tools/src/main/java/org/nhooo/example/tools/Hello.java"); System.out.println("Compile result code = " + result); } }