public interface ToolProvider
命令行工具的接口,提供一种无需启动新 VM 即可调用的方法。
工具提供者通常使用 ServiceLoader 定义的服务提供者加载工具定位。每个提供者都必须提供一个名称和一种运行相应工具实例的方法。当工具运行时,它将提供一个字符串参数数组和一对流:一个用于正常(或预期)输出,另一个用于报告可能发生的任何错误。字符串参数的解释通常由每个单独的工具提供者定义,但通常对应于从命令行调用工具时可以提供给工具的参数。
- 自从:
- 9
-
方法总结
修饰符和类型方法描述返回工具的简短描述,如果没有可用描述,则返回空的Optional。static Optional<ToolProvider>返回具有给定名称的ToolProvider的第一个实例,由ServiceLoader使用系统类加载器加载。name()返回此工具提供者的名称。default intrun(PrintStream out, PrintStream err, String... args) 运行该工具的一个实例,成功运行返回零。intrun(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流包装在PrintWriters 中,然后调用run(PrintWriter, PrintWriter, String[])。 - 参数:
out- 应写入“预期”输出的流err- 应写入任何错误消息的流args- 该工具的命令行参数- 返回:
- 执行该工具的结果。返回值为 0 表示该工具没有遇到任何错误;任何其他值表示在执行过程中至少发生了一个错误。
- 抛出:
NullPointerException- 如果任何参数是null,或者如果args数组中有任何null值
-
findFirst
返回具有给定名称的ToolProvider的第一个实例,由ServiceLoader使用系统类加载器加载。- 参数:
name- 所需工具提供者的名称- 返回:
-
找到的第一个实例的
Optional<ToolProvider> - 抛出:
NullPointerException- 如果name是null
-