public interface ToolProvider
命令行工具的接口,提供一种无需启动新 VM 即可调用的方法。
工具提供者通常使用 ServiceLoader
定义的服务提供者加载工具定位。每个提供者都必须提供一个名称和一种运行相应工具实例的方法。当工具运行时,它将提供一个字符串参数数组和一对流:一个用于正常(或预期)输出,另一个用于报告可能发生的任何错误。字符串参数的解释通常由每个单独的工具提供者定义,但通常对应于从命令行调用工具时可以提供给工具的参数。
- 自从:
- 9
-
方法总结
修饰符和类型方法描述返回工具的简短描述,如果没有可用描述,则返回空的Optional
。static Optional<ToolProvider>
返回具有给定名称的ToolProvider
的第一个实例,由ServiceLoader
使用系统类加载器加载。name()
返回此工具提供者的名称。default int
run
(PrintStream out, PrintStream err, String... args) 运行该工具的一个实例,成功运行返回零。int
run
(PrintWriter out, PrintWriter err, String... args) 运行该工具的一个实例,成功运行返回零。
-
方法详情
-
name
String name()返回此工具提供者的名称。- API 注意:
- 建议名称与命令行中使用的名称相同:例如,“javac”、“jar”、“jlink”。
- 返回:
- 此工具提供者的名称
-
description
返回工具的简短描述,如果没有可用描述,则返回空的Optional
。- API 注意:
-
建议将描述放在一行中,以便创建简明的概述,如下所示:
jar Create, manipulate, and extract an archive of classes and resources. javac Read Java declarations and compile them into class files. jlink Assemble a set of modules (...) into a custom runtime image.
- 实现要求:
-
此实现返回一个空的
Optional
。 - 返回:
-
工具的简短描述,如果没有可用的描述,则为空
Optional
- 自从:
- 19
-
run
运行该工具的一个实例,成功运行返回零。任何非零返回值都表示执行期间出现特定于工具的错误。应提供两个流,用于“预期”输出和任何错误消息。如果不需要区分输出,则两者可以使用相同的流。- API 注意:
- 参数的解释将特定于每个工具。
- 参数:
out
- 应写入“预期”输出的流err
- 应写入任何错误消息的流args
- 该工具的命令行参数- 返回:
- 执行该工具的结果。返回值为 0 表示该工具没有遇到任何错误;任何其他值表示在执行过程中至少发生了一个错误。
- 抛出:
NullPointerException
- 如果任何参数是null
,或者如果args
数组中有任何null
值
-
run
运行该工具的一个实例,成功运行返回零。任何非零返回值都表示执行期间出现特定于工具的错误。应提供两个流,用于“预期”输出和任何错误消息。如果不需要区分输出,则两者可以使用相同的流。- API 注意:
- 参数的解释将特定于每个工具。
- 实现注意事项:
-
此实现将
out
和err
流包装在PrintWriter
s 中,然后调用run(PrintWriter, PrintWriter, String[])
。 - 参数:
out
- 应写入“预期”输出的流err
- 应写入任何错误消息的流args
- 该工具的命令行参数- 返回:
- 执行该工具的结果。返回值为 0 表示该工具没有遇到任何错误;任何其他值表示在执行过程中至少发生了一个错误。
- 抛出:
NullPointerException
- 如果任何参数是null
,或者如果args
数组中有任何null
值
-
findFirst
返回具有给定名称的ToolProvider
的第一个实例,由ServiceLoader
使用系统类加载器加载。- 参数:
name
- 所需工具提供者的名称- 返回:
-
找到的第一个实例的
Optional<ToolProvider>
- 抛出:
NullPointerException
- 如果name
是null
-