Module java.compiler
Package javax.tools
package javax.tools
提供了可以从程序中调用的工具的接口,例如编译器。
这些接口和类是Java平台标准版(Java SE)的一部分,但不需要提供任何实现它们的工具。
除非明确允许,否则此包中的所有方法如果给定一个null
参数或者给定一个包含null
元素的列表或集合,可能会抛出NullPointerException
。同样,除非明确允许,没有方法可以返回null
。
这个包是Java编程语言编译器框架的主页。该框架允许框架的客户端从程序中定位和运行编译器。该框架还提供了用于结构化访问诊断信息(DiagnosticListener
)的服务提供者接口(SPI),以及用于覆盖文件访问的文件抽象(JavaFileManager
和JavaFileObject
)。更多关于使用SPI的详细信息,请参见JavaCompiler
。
在运行时不需要编译器。但是,如果提供了默认编译器,可以使用ToolProvider
来定位它,例如:
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
可以通过服务提供者机制提供替代编译器或工具。
例如,如果com.vendor.VendorJavaCompiler
是JavaCompiler
工具的提供者,则其jar文件将包含文件META-INF/services/javax.tools.JavaCompiler
。该文件将包含单行:
com.vendor.VendorJavaCompiler
如果jar文件在类路径上,可以使用以下代码定位VendorJavaCompiler
:
JavaCompiler compiler = ServiceLoader.load(JavaCompiler.class).iterator().next();
- 自版本:
- 1.6
-
ClassDescriptionDiagnostic<S>工具诊断的接口。诊断的种类,例如错误或警告。提供了一种简单的方式来收集诊断信息到列表中。从工具接收诊断的接口。从程序中调用Java编程语言文档工具的接口。代表文档任务的未来的接口。特定于
DocumentationTool
的位置。工具的文件抽象。ForwardingFileObject<F extends FileObject>将调用转发给给定文件对象。ForwardingJavaFileManager<M extends JavaFileManager>将调用转发给给定文件管理器。ForwardingJavaFileObject<F extends JavaFileObject>将调用转发给给定文件对象。从程序中调用Java编程语言编译器的接口。代表编译任务的未来的接口。用于操作Java编程语言源文件和类文件的文件管理器。文件对象的位置接口。用于操作Java编程语言源文件和类文件的工具的文件抽象。JavaFileObject的种类。用于识别选项的接口。提供了大多数JavaFileObject方法的简单实现。基于java.io.File
和java.nio.file.Path
的文件管理器。从字符串创建Path
对象的工厂。文件对象的标准位置。可以从程序中调用的工具的通用接口。提供了定位工具提供者(例如编译器提供者)的方法。