Module java.base
Package java.util.spi

Interface ToolProvider


public interface ToolProvider
一个用于命令行工具的接口,提供一种在不一定启动新VM的情况下被调用的方式。

通常,工具提供者使用由ServiceLoader定义的服务提供程序加载工具。每个提供者必须提供一个名称和一个运行相应工具实例的方法。运行工具时,将提供一个字符串参数数组和一对流:一个用于正常(或预期)输出,另一个用于报告可能发生的任何错误。字符串参数的解释通常由每个单独的工具提供者定义,但通常对应于在从命令行调用工具时可以提供给工具的参数。

自版本:
9
  • Method Details

    • name

      String name()
      返回此工具提供者的名称。
      API 注意:
      建议名称与在命令行上使用的名称相同:例如,"javac","jar","jlink"。
      返回:
      此工具提供者的名称
    • description

      default Optional<String> description()
      返回工具的简短描述,如果没有描述可用,则返回一个空的Optional
      API 注意:
      建议描述适合单行,以便创建简洁的概述,如下所示:
      
       jar
         创建、操作和提取类和资源的存档。
       javac
         读取Java声明并将其编译为类文件。
       jlink
         将一组模块(...)组装成自定义运行时映像。
       
       
      实现要求:
      此实现返回一个空的Optional
      返回:
      工具的简短描述,如果没有描述可用,则返回一个空的Optional
      自版本:
      19
    • run

      int run(PrintWriter out, PrintWriter err, String... args)
      运行工具的实例,成功运行返回零。任何非零返回值表示执行过程中发生了特定于工具的错误。应提供两个流,用于“预期”输出和任何错误消息。如果不需要区分输出,则可以使用相同的流。
      API 注意:
      参数的解释将针对每个工具具体而异。
      参数:
      out - 应将“预期”输出写入的流
      err - 应将任何错误消息写入的流
      args - 用于工具的命令行参数
      返回:
      工具执行的结果。返回值为0表示工具未遇到任何错误;任何其他值表示执行过程中至少发生了一个错误。
      抛出:
      NullPointerException - 如果任何参数为null,或者args数组中存在任何null
    • run

      default int run(PrintStream out, PrintStream err, String... args)
      运行工具的实例,成功运行返回零。任何非零返回值表示执行过程中发生了特定于工具的错误。应提供两个流,用于“预期”输出和任何错误消息。如果不需要区分输出,则可以使用相同的流。
      API 注意:
      参数的解释将针对每个工具具体而异。
      实现注意:
      此实现将outerr流包装在PrintWriter中,然后调用run(PrintWriter, PrintWriter, String[])
      参数:
      out - 应将“预期”输出写入的流
      err - 应将任何错误消息写入的流
      args - 用于工具的命令行参数
      返回:
      工具执行的结果。返回值为0表示工具未遇到任何错误;任何其他值表示执行过程中至少发生了一个错误。
      抛出:
      NullPointerException - 如果任何参数为null,或者args数组中存在任何null
    • findFirst

      static Optional<ToolProvider> findFirst(String name)
      返回具有给定名称的第一个ToolProvider实例,由使用系统类加载器的ServiceLoader加载。
      参数:
      name - 所需工具提供者的名称
      返回:
      找到的第一个实例的Optional<ToolProvider>
      抛出:
      NullPointerException - 如果namenull