Spec-Zone.ru › OpenJDK 24

Модуль jdk.compiler

module jdk.compiler
Определяет реализацию системного Java-компилятора и его командной строки, javac.

Пакеты com.sun.source.* предоставляют API дерева компиляции: API для доступа к абстрактным деревьям (AST) представляющим Java-исходный код и комментарии к документации, используемые javac, javadoc и связанными инструментами.

javac

Этот модуль предоставляет эквивалент командно-строкового доступа к javac через ToolProvider и Tool интерфейсы поставщиков сервисов (SPI), а также более гибкий доступ через JavaCompiler SPI.

Экземпляры инструментов можно получить, вызвав ToolProvider.findFirst или загрузчик сервисов с именем "javac".

Кроме того, экземпляры JavaCompiler.CompilationTask, полученные от JavaCompiler, можно привести к типу JavacTask для доступа к аспектам javac на более низком уровне, таким как Abstract Syntax Tree (AST).

Этот модуль использует FileSystemProvider API для поиска поставщиков файловых систем. В частности, это означает, что поставщик файловой системы jar, например, в модуле jdk.zipfs, должен быть доступен, если компилятор должен читать JAR-файлы.

Опции и переменные окружения

Полный набор опций и переменных окружения, поддерживаемых javac, приведен в руководстве по инструменту javac. Однако существуют некоторые ограничения при вызове компилятора через его API.
  • Опция -J не поддерживается. Любые необходимые параметры JVM должны быть установлены в JVM, используемой для вызова API. IllegalArgumentException будет выброшено, если эта опция используется при вызове инструмента через JavaCompiler API; ошибка будет сообщена, если опция используется при вызове javac через ToolProvider или устаревший Main API.

  • Функция «подстановочных знаков пути класса» не поддерживается. Функция поддерживается только родным загрузчиком. При вызове инструмента через его API все необходимые JAR-файлы должны быть включены непосредственно в опцию --class-path или переменную окружения CLASSPATH. При вызове инструмента через его API все компоненты пути класса будут интерпретироваться буквально и будут игнорироваться, если не будет соответствующей директории или файла. Опция -Xlint:paths может быть использована для вывода предупреждений об отсутствующих компонентах.

Следующие ограничения применяются при вызове компилятора через интерфейс JavaCompiler.
  • Файлы аргументов (так называемые @-файлы) не поддерживаются. Содержимое таких файлов должно быть включено непосредственно в список опций, предоставляемый при вызове инструмента через этот API. IllegalArgumentException будет выброшено, если опция используется при вызове инструмента через этот API.

  • Переменная окружения JDK_JAVAC_OPTIONS не поддерживается. Любые опции, определенные в переменной окружения, должны быть включены непосредственно в список опций, предоставляемых при вызове API; любые значения в переменной окружения будут игнорироваться.

  • Опции, используемые только для получения информации (например, --help, --help-extended, --version и --full-version) не поддерживаются. IllegalArgumentException будет выброшено, если любая из этих опций используется при вызове инструмента через этот API.

  • Опции, связанные с путями, зависят от используемого менеджера файлов при вызове JavaCompiler.getTask(java.io.Writer, javax.tools.JavaFileManager, javax.tools.DiagnosticListener<? super javax.tools.JavaFileObject>, java.lang.Iterable<java.lang.String>, java.lang.Iterable<java.lang.String>, java.lang.Iterable<? extends javax.tools.JavaFileObject>). Стандартные опции, такие как --class-path, --module-path и т.д., доступны при использовании менеджера файлов по умолчанию или производного от него. Эти опции могут быть недоступны и могут быть доступны другие опции при использовании другого менеджера файлов. IllegalArgumentException будет выброшено, если используется любая опция, неизвестная инструменту или менеджеру файлов при вызове инструмента через этот API.
Обратите внимание, что переменная окружения CLASSPATH учитывается при вызове компилятора через его API, хотя такое использование не рекомендуется. Переменную окружения нельзя сбросить после запуска JVM, поэтому рекомендуется убедиться, что переменная окружения не установлена при запуске JVM, которая будет использоваться для вызова компилятора. Однако, если значение установлено, такое значение можно переопределить, используя опцию --class-path при вызове компилятора или установив StandardLocation.CLASS_PATH в менеджере файлов при вызове компилятора через интерфейс JavaCompiler.

SuppressWarnings

JLS 9.6.4.5 определяет ряд строк, которые могут быть использованы для подавления предупреждений, которые могут быть сгенерированы Java-компилятором. Кроме того, javac также поддерживает другие строки, которые могут быть использованы для подавления других видов предупреждений. В следующей таблице перечислены все строки, которые могут быть использованы с @SuppressWarnings.
END_OF_DOCUMENT_MARKER
Свойства, поддерживаемые SuppressWarnings
Строка Подавить предупреждения о...
auxiliaryclass вспомогательный класс, скрытый в исходном файле и используемый из других файлов
cast использование необоснованных приведений типов
classfile проблемы, связанные с содержимым файла класса
dangling-doc-comments проблемы, связанные с «висячими» комментариями документации, не прикрепленными к объявлению
deprecation использование устаревших элементов
dep-ann элементы, помеченные как устаревшие в комментарии документации, но не использующие аннотацию @Deprecated
divzero деление на константу целого числа 0
empty пустое оператор после if
exports проблемы, связанные с экспортом модулей
fallthrough переход от одного случая оператора switch к следующему
finally finally блоки, которые не завершаются нормально
incubating использование инкубационных модулей
lossy-conversions возможные потери при преобразованиях в составном присваивании
missing-explicit-ctor отсутствие явных конструкторов в публичных и защищенных классах в экспортируемых пакетах
module проблемы, связанные с системой модулей
opens проблемы, связанные с открытием модулей
overloads проблемы, связанные с перегрузкой методов
overrides проблемы, связанные с переопределением методов
path недопустимые элементы пути в командной строке
preview использование предварительных языковых функций
rawtypes использование необработанных типов
removal использование API, которое было помечено для удаления
restricted использование ограниченных методов
requires-automatic использование автоматических модулей в requires блоках
requires-transitive-automatic автоматические модули в requires transitive
serial Serializable классы, у которых нет поля serialVersionUID, или другие подозрительные объявления в Serializable и Externalizable классах и интерфейсах
static доступ к статическому члену с помощью экземпляра
strictfp избыточное использование модификатора strictfp
synchronization попытки синхронизации на экземплярах классов, основанных на значениях
text-blocks несогласованные символы пробелов в отступах текстового блока
this-escape конструктор суперкласса передает this до инициализации подкласса
try проблемы, связанные с использованием try блоков (то есть try-with-resources)
unchecked неопределенные операции
varargs потенциально небезопасные методы vararg
doclint:accessibility проблемы доступа, обнаруженные в комментариях документации
doclint:all все проблемы, обнаруженные в комментариях документации
doclint:html проблемы с HTML, обнаруженные в комментариях документации
doclint:missing отсутствующие элементы в комментариях документации
doclint:reference проблемы с ссылками, обнаруженные в комментариях документации
doclint:syntax синтаксические ошибки, обнаруженные в комментариях документации
Граф модулей:
Module graph for jdk.compilerModule graph for jdk.compiler
Руководства по инструментам:
javac
С:
9

Пакеты

Пакет Описание
com.sun.source.doctree
Предоставляет интерфейсы для представления комментариев документации в виде абстрактных синтаксических деревьев (AST).
com.sun.source.tree
Предоставляет интерфейсы для представления исходного кода в виде абстрактных синтаксических деревьев (AST).
com.sun.source.util
Предоставляет утилиты для операций над абстрактными синтаксическими деревьями (AST).
com.sun.tools.javac
Этот пакет предоставляет устаревший входной пункт для инструмента javac.
Из Пакеты
java.compiler javax.annotation.processing javax.lang.model javax.lang.model.element javax.lang.model.type javax.lang.model.util javax.tools

Модули

Модификатор Модуль Описание
transitive java.compiler
Определяет API модели языка, обработки аннотаций и компилятора Java.

Сервисы

Тип Описание
JavaCompiler
Интерфейс для вызова компиляторов языка программирования Java из программ.
Tool
Общий интерфейс для инструментов, которые могут быть вызваны из программы.
ToolProvider
Используйте ToolProvider.findFirst("javac") для получения экземпляра ToolProvider, который предоставляет эквивалент доступа через командную строку к инструменту javac.
Тип Описание
Plugin
Интерфейс для плагина javac.
Processor
Интерфейс для обработчика аннотаций.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://download.java.net/java/early_access/jdk24/docs/api/jdk.compiler/module-summary.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API