Module  java.compiler

Package javax.tools

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

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

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

这个包是Java编程语言编译器框架的首页。 该框架允许框架的客户端从程序中定位和运行编译器。 该框架还提供了用于结构化访问诊断( DiagnosticListener )的服务提供程序接口(SPI)以及用于覆盖文件访问的文件抽象( 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