Tool (Java SE 22 & JDK 22)
Description: declaration: module: java.compiler, package: javax.tools, interface: Tool
Keywords: javax.tools.Tool interface

Module java.compiler
Package javax.tools

# Interface Tool

All Known Subinterfaces:
  `DocumentationTool`, `JavaCompiler`

public interface Tool
Common interface for tools that can be invoked from a program. A tool is traditionally a command line program such as a compiler. The set of tools available with a platform is defined by the vendor.

Tools can be located using `ServiceLoader.load(Class)`.

Since:
  1.6

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Set<SourceVersion>`
  `getSourceVersions()`
  Returns the source versions of the Java programming language supported by this tool.
  `default String`
  `name()`
  Returns the name of this tool, or an empty string if no name is provided.
  `int`
  `run(InputStream in, OutputStream out, OutputStream err, String... arguments)`
  Run the tool with the given I/O channels and arguments.

- ## Method Details

  - ### name

    default String name()
    Returns the name of this tool, or an empty string if no name is provided.
    API Note:
      It is recommended that the name be the same as would be used on the command line: for example, "javac", "jar", "jlink".
    Implementation Note:
      This implementation returns an empty string.
    Returns:
      the name of this tool
    Since:
      9

  - ### run

    int run(InputStream in, OutputStream out, OutputStream err, String... arguments)
    Run the tool with the given I/O channels and arguments. By convention a tool returns 0 for success and nonzero for errors. Any diagnostics generated will be written to either `out` or `err` in some unspecified format.
    Parameters:
      `in` - "standard" input; use System.in if null
      `out` - "standard" output; use System.out if null
      `err` - "standard" error; use System.err if null
      `arguments` - arguments to pass to the tool
    Returns:
      0 for success; nonzero otherwise
    Throws:
      `NullPointerException` - if the array of arguments contains any `null` elements.

  - ### getSourceVersions

    Set<SourceVersion> getSourceVersions()
    Returns the source versions of the Java programming language supported by this tool.
    Returns:
      a set of supported source versions