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