Module java.compiler

Package javax.tools


package javax.tools
提供了可以从程序中调用的工具的接口,例如编译器。

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

除非明确允许,否则此包中的所有方法如果给定一个null参数或者给定一个包含null元素的列表或集合,可能会抛出NullPointerException。同样,除非明确允许,没有方法可以返回null

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

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

JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();

可以通过服务提供者机制提供替代编译器或工具。

例如,如果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