public interface ToolProvider
一个用于命令行工具的接口,提供一种在不一定启动新VM的情况下被调用的方式。
通常,工具提供者使用由ServiceLoader
定义的服务提供程序加载工具。每个提供者必须提供一个名称和一个运行相应工具实例的方法。运行工具时,将提供一个字符串参数数组和一对流:一个用于正常(或预期)输出,另一个用于报告可能发生的任何错误。字符串参数的解释通常由每个单独的工具提供者定义,但通常对应于在从命令行调用工具时可以提供给工具的参数。
- 自版本:
- 9
-
Method Summary
Modifier and TypeMethodDescription返回工具的简短描述,如果没有描述可用,则返回一个空的Optional
。static Optional
<ToolProvider> 返回具有给定名称的第一个ToolProvider
实例,由使用系统类加载器的ServiceLoader
加载。name()
返回此工具提供者的名称。default int
run
(PrintStream out, PrintStream err, String... args) 运行工具的实例,成功运行返回零。int
run
(PrintWriter out, PrintWriter err, String... args) 运行工具的实例,成功运行返回零。
-
Method Details
-
name
String name()返回此工具提供者的名称。- API 注意:
- 建议名称与在命令行上使用的名称相同:例如,"javac","jar","jlink"。
- 返回:
- 此工具提供者的名称
-
description
返回工具的简短描述,如果没有描述可用,则返回一个空的Optional
。- API 注意:
-
建议描述适合单行,以便创建简洁的概述,如下所示:
jar 创建、操作和提取类和资源的存档。 javac 读取Java声明并将其编译为类文件。 jlink 将一组模块(...)组装成自定义运行时映像。
- 实现要求:
-
此实现返回一个空的
Optional
。 - 返回:
-
工具的简短描述,如果没有描述可用,则返回一个空的
Optional
。 - 自版本:
- 19
-
run
运行工具的实例,成功运行返回零。任何非零返回值表示执行过程中发生了特定于工具的错误。应提供两个流,用于“预期”输出和任何错误消息。如果不需要区分输出,则可以使用相同的流。- API 注意:
- 参数的解释将针对每个工具具体而异。
- 参数:
-
out
- 应将“预期”输出写入的流 -
err
- 应将任何错误消息写入的流 -
args
- 用于工具的命令行参数 - 返回:
- 工具执行的结果。返回值为0表示工具未遇到任何错误;任何其他值表示执行过程中至少发生了一个错误。
- 抛出:
-
NullPointerException
- 如果任何参数为null
,或者args
数组中存在任何null
值
-
run
运行工具的实例,成功运行返回零。任何非零返回值表示执行过程中发生了特定于工具的错误。应提供两个流,用于“预期”输出和任何错误消息。如果不需要区分输出,则可以使用相同的流。- API 注意:
- 参数的解释将针对每个工具具体而异。
- 实现注意:
-
此实现将
out
和err
流包装在PrintWriter
中,然后调用run(PrintWriter, PrintWriter, String[])
。 - 参数:
-
out
- 应将“预期”输出写入的流 -
err
- 应将任何错误消息写入的流 -
args
- 用于工具的命令行参数 - 返回:
- 工具执行的结果。返回值为0表示工具未遇到任何错误;任何其他值表示执行过程中至少发生了一个错误。
- 抛出:
-
NullPointerException
- 如果任何参数为null
,或者args
数组中存在任何null
值
-
findFirst
返回具有给定名称的第一个ToolProvider
实例,由使用系统类加载器的ServiceLoader
加载。- 参数:
-
name
- 所需工具提供者的名称 - 返回:
-
找到的第一个实例的
Optional<ToolProvider>
- 抛出:
-
NullPointerException
- 如果name
为null
-