Spec-Zone.ru › OpenJDK 21

Модуль 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 не поддерживается. Любые необходимые параметры виртуальной машины должны быть установлены в виртуальной машине, используемой для вызова 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, хотя такой способ использования не рекомендуется. Переменная среды не может быть сброшена после запуска виртуальной машины, поэтому рекомендуется убедиться, что переменная среды не установлена при запуске виртуальной машины, которая будет использоваться для вызова компилятора. Однако, если значение было установлено, любое такое значение может быть переопределено с помощью параметра --class-path при вызове компилятора или установкой StandardLocation.CLASS_PATH в менеджере файлов при вызове компилятора через интерфейс JavaCompiler.

SuppressWarnings

JLS 9.6.4.5 определяет ряд строк, которые могут использоваться для подавления предупреждений, которые могут генерироваться компилятором Java. Кроме того, javac также поддерживает другие строки, которые могут использоваться для подавления других видов предупреждений. В следующей таблице перечислены все строки, которые могут использоваться с @SuppressWarnings.
END_OF_DOCUMENT_MARKER
Строки, поддерживаемые SuppressWarnings
Строка Подавление предупреждений об ...
auxiliaryclass вспомогательный класс, скрытый в исходном файле и используемый из других файлов
cast использование ненужных приведений типов
classfile проблемы, связанные с содержимым файла класса
deprecation использование устаревших элементов
dep-ann элементы, помеченные как устаревшие в комментарии к документации, но не использующие аннотацию @Deprecated
divzero деление на константу целого числа 0
empty пустое оператор после if
exports проблемы, связанные с экспортом модулей
fallthrough пропускание от одного случая оператора switch к следующему
finally finally блоки, которые не завершаются нормально
lossy-conversions возможные потери при преобразованиях в составных операциях присваивания
missing-explicit-ctor отсутствие явных конструкторов в публичных и защищенных классах в экспортируемых пакетах
module проблемы, связанные с системой модулей
opens проблемы, связанные с открытием модулей
overloads проблемы, связанные с перегрузкой методов
overrides проблемы, связанные с переопределением методов
path некорректные элементы пути в командной строке
preview использование предварительных языковых функций
rawtypes использование необработанных типов
removal использование API, который был помечен для удаления
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, 2023, 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://docs.oracle.com/en/java/javase/21/docs/api/jdk.compiler/module-summary.html

Spec-Zone.ru

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