Модуль jdk.compiler
Пакеты 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будет выброшено, если эта опция используется при вызове инструмента черезJavaCompilerAPI; ошибка будет сообщена, если опция используется при вызове javac черезToolProviderили устаревшийMainAPI.Функция «подстановочных знаков пути класса» не поддерживается. Функция поддерживается только родным загрузчиком. При вызове инструмента через его 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. | Строка | Подавить предупреждения о... |
|---|---|
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 |
синтаксические ошибки, обнаруженные в комментариях документации |
- Граф модулей:
- Руководства по инструментам:
- 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