Top Description Packages
OpenJDK 1.22

Module jdk.compiler

Requires
java.base, java.compiler, jdk.internal.opt, jdk.zipfs
Imports
javax.tools.JavaCompiler, .StandardLocation

Defines the implementation of the system Java compiler and its command line equivalent, javac.

The com.sun.source.* packages provide the Compiler Tree API: an API for accessing the abstract trees (ASTs) representing Java source code and documentation comments, used by javac, javadoc and related tools.

javac

This module provides the equivalent of command-line access to javac via the ToolProvider and javax.tools.Tool service provider interfaces (SPIs), and more flexible access via the JavaCompiler SPI.

Instances of the tools can be obtained by calling ToolProvider.findFirst or the service loader with the name "javac".

In addition, instances of javax.tools.JavaCompiler.CompilationTask obtained from JavaCompiler can be downcast to JavacTask for access to lower level aspects of javac, such as the Abstract Syntax Tree (AST).

This module uses the FileSystemProvider API to locate file system providers. In particular, this means that a jar file system provider, such as that in the jdk.zipfs module, must be available if the compiler is to be able to read JAR files.

Options and Environment Variables

The full set of options and environment variables supported by javac is given in the javac Tool Guide. However, there are some restrictions when the compiler is invoked through its API. The following restrictions apply when invoking the compiler through the JavaCompiler interface. Note that the CLASSPATH environment variable is honored when invoking the compiler through its API, although such use is discouraged. An environment variable cannot be unset once a VM has been started, and so it is recommended to ensure that the environment variable is not set when starting a VM that will be used to invoke the compiler. However, if a value has been set, any such value can be overridden by using the --class-path option when invoking the compiler, or setting StandardLocation#CLASS_PATH in the file manager when invoking the compiler through the JavaCompiler interface.

SuppressWarnings

JLS 9.6.4.5 specifies a number of strings that can be used to suppress warnings that may be generated by a Java compiler. In addition, javac also supports other strings that can be used to suppress other kinds of warnings. The following table lists all the strings that can be used with @SuppressWarnings.
Strings supported by SuppressWarnings
StringSuppress Warnings About ...
auxiliaryclass an auxiliary class that is hidden in a source file, and is used from other files
cast use of unnecessary casts
classfile issues related to classfile contents
deprecation use of deprecated items
dep-ann items marked as deprecated in a documentation comment but not using the @Deprecated annotation
divzero division by constant integer 0
empty empty statement after if
exports issues regarding module exports
fallthrough falling through from one case of a switch statement to the next
finally finally clauses that do not terminate normally
incubating use of incubating modules
lossy-conversions possible lossy conversions in compound assignment
missing-explicit-ctor missing explicit constructors in public and protected classes in exported packages
module module system related issues
opens issues regarding module opens
overloads issues regarding method overloads
overrides issues regarding method overrides
path invalid path elements on the command line
preview use of preview language features
rawtypes use of raw types
removal use of API that has been marked for removal
restricted use of restricted methods
requires-automatic use of automatic modules in the requires clauses
requires-transitive-automatic automatic modules in requires transitive
serial Serializable classes that do not have a serialVersionUID field, or other suspect declarations in Serializable and Externalizable classes and interfaces
static accessing a static member using an instance
strictfp unnecessary use of the strictfp modifier
synchronization synchronization attempts on instances of value-based classes
text-blocks inconsistent white space characters in text block indentation
this-escape superclass constructor leaking this before subclass initialized
try issues relating to use of try blocks (that is, try-with-resources)
unchecked unchecked operations
varargs potentially unsafe vararg methods
doclint:accessibility accessibility issues found in documentation comments
doclint:all all issues found in documentation comments
doclint:html HTML issues found in documentation comments
doclint:missing missing items in documentation comments
doclint:reference reference issues found in documentation comments
doclint:syntax syntax issues found in documentation comments
Since
9
Provided Services
JavaCompiler:JavacTool
PlatformProvider:JDKPlatformProvider
Tool:JavacTool
ToolProvider:JavacToolProvider
Used Services
DocLint, PlatformProvider, Plugin, Processor

Package Summary

Modifier and TypePackage and Description
exported package
com.sun.source.doctree

Provides interfaces to represent documentation comments as abstract syntax trees (AST).

exported package
com.sun.source.tree

Provides interfaces to represent source code as abstract syntax trees (AST).

exported package
com.sun.source.util

Provides utilities for operations on abstract syntax trees (AST).

package
exported package
com.sun.tools.javac

This package provides a legacy entry point for the javac tool.

package
package
package
package
package
internal package
package
package
package
package
com.sun.tools.javac.platform

An internal API for plugging in --release implementations.

Exported to jdk.jdeps, jdk.javadoc

internal package
package
package
package
package
internal package
internal package
internal package