模块  java.compiler

Package javax.tools

为可以从程序调用的工具提供接口,例如编译器。

这些接口和类是Java™平台标准版(Java SE)的一部分,但不要求提供任何实现它们的工具。

除非明确允许,此包中的所有方法都将抛出NullPointerException如果给一个null如果给一个参数或list or collectionnull元素。 同样,除非明确允许,否则任何方法都不能返回null

该包是Java编程语言编译器框架的主页。 该框架允许框架的客户端从程序中定位和运行编译器。 该框架还提供服务提供者接口(SPI),用于诊断的结构化访问( DiagnosticListener )以及用于覆盖文件访问的文件抽象( JavaFileManagerJavaFileObject )。 有关使用SPI的更多详细信息,请参见JavaCompiler

在运行时不需要编译器。 但是,如果提供了默认编译器,则可以使用ToolProvider找到它 ,例如:

JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();

可以通过service provider mechanism提供替代编译器或工具。

例如,如果com.vendor.VendorJavaCompilerJavaCompiler工具的提供者,则其jar文件将包含文件META-INF/services/javax.tools.JavaCompiler 该文件将包含单行:

com.vendor.VendorJavaCompiler

如果jar文件在类路径上,可以使用以下代码找到VendorJavaCompiler:

JavaCompiler compiler = ServiceLoader.load(JavaCompiler.class).iterator().next();

从以下版本开始:
1.6