краткое содержание:
Сегодня фанат спросил Брата Кота, что он столкнулся с распространенной проблемой при разработке Java. Сообщение об ошибке:
java.lang.NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field 'com.sun.tools.javac.tree.JCTree qualid'
,Эта проблема особенно вероятна, если инструмент компиляции Java (javac) несовместим.,Особенно при интеграции кода, связанного с ИИ.
Более Интегрированная разработка AI и Java Техническая информация, добро пожаловать к прочтению этой статьи! 🔥
В последнее время некоторые фанаты интегрируют один Модель искусственного интеллекта В процессе компиляции произошла следующая ошибка:
java.lang.NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field 'com.sun.tools.javac.tree.JCTree qualid'
С чем обычно связана эта ошибка? Брат Мао проверил среду разработки вентилятора и обнаружил, что это произошло из-за Версия компилятора Javac несовместима с библиотеками, используемыми в проекте. вызвано.
Эта проблема обычно возникает, когда Java-версия и Javac API изне соответствует。Конкретно,com.sun.tools.javac.tree
да API инструмента Javac часть, следует Обновления версии JDK И постоянно меняется. Если вы используете Java-зависимости Требуется определенная версия Javac, но среда компиляции проекта не соответствует этой версии, что приведет к этой ошибке. NoSuchFieldError
。
Цитировать: Маотоху напоминает всем: «JDK и Сторонние библиотекиизпроблемы совместимости» даJavaпроект часто упускают из виду, но он подвержен ошибкам,особенныйдасуществоватьполе ИИ,Многие библиотеки зависят от конкретной изJDK-версии.
На приведенных выше этапах решения Брат Кот прошел Режим командной строки Представляем вам, как обновить или переключиться JDK Версия. Но да, многие застройщики будут существовать IDEA Разработано в Китае, IDEA. дав настоящее время популярныйиз Один из инструментов разработки,выключатель Среда компиляции и Операционная среда JDK да Общие операции.
Ниже Брат Кот шаг за шагом проведет вас по IDEA Настройки→Переключить JDK среда.
IDEA Гибкость позволяет устанавливать разные настройки для разных проектов. JDK Версия. Это существование очень важно при разработке нескольких проектов, особенно с участием нескольких зависимостей версий и проектов. Давайте посмотрим на существование IDEA Как работать подробно.
File -> Project Structure
(илиили используйте сочетания клавиш Ctrl + Alt + Shift + S
)。
Project
:
New Project SDK
окно, вы можете выбрать то, что вы установили из JDK или нажмите Download JDK Скачайте подходящую из Версию из Интернета (например OpenJDK 11, OpenJDK 17 ждать).Иногда проект может содержать несколько модулей, для каждого из которых может потребоваться своя версия JDK. Способ настройки среды JDK отдельно для каждого модуля следующий:
Иногда наш проект компилируется JDK Версия и фактическая эксплуатация JDK Версии могут отличаться. Чтобы гарантировать, что среда выполнения соответствует времени компиляции проекта, вы можете выполнить следующие шаги, чтобы установить время выполнения JDK:
Run -> Edit Configurations...
。
Если вы хотите настроить один и тот же вариант для нескольких проектов JDK Версия,или или глобальная модификация IDEA из JDK Для настройки вы можете выполнить следующие шаги:
File -> Settings
,илиили используйте сочетания клавиш Ctrl + Alt + S
。
pom.xml
указано в файле <maven.compiler.source>
и <maven.compiler.target>
контролировать проектиз JDK Компиляция версии。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>11</source>
<target>11</target>
</configuration>
</plugin>
</plugins>
</build>
build.gradle
Установить в файл sourceCompatibility
и targetCompatibility
:sourceCompatibility = 11
targetCompatibility = 11
Цитировать: голова кошки Тигр рекомендует всем постараться сохранить Среду при развитии существования компиляциии Операционная согласованность окружающей среды, чтобы избежать существования времени в производственных средах выполнение проблем совместимости.
Благодаря вышеуказанным шагам вы смогли умело IntelliJ IDEA Переключиться в проектиз Среда компиляции и Операционная среда。
Во-первых, убедитесь, что вы используете JDK-версия Соответствует зависимости проекта от библиотеки Версия. Убедитесь, что вы в данный момент используете версию JDK, с помощью следующей команды:
java -version
Вы увидите вывод, аналогичный следующему:
openjdk version "11.0.10" 2021-01-19
существоватьпроектиз build.gradle или pom.xml файл, найдите да, чтобы увидеть, есть ли какой-либо конкретный Javac или JDK-версия иззависимость. Убедитесь, что вы указали версию изJDK, соответствующую этим зависимостям из Версия.
dependencies {
compileOnly 'org.projectlombok:lombok:1.18.12'
annotationProcessor 'org.projectlombok:lombok:1.18.12'
// Обеспечьте согласованность с версией JDK.
}
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
</dependency>
</dependencies>
В соответствии с вашими потребностями обновите или понизьте версию вашей версии JDK. Разными JDK можно управлять через SDKMAN:
sdk install java 11.0.10-open
или или переключитесь на нужную из Версию:
sdk use java 8.0.265-zulu
После завершения настройки JDKилиJavacВерсияиз,Выполните следующую команду Очистить проекти Восстановить:
./gradlew clean build
или существовать в Maven.
mvn clean install
Цитировать: “голова кошки Тигр рекомендует всем постараться остаться в Среде компиляция опирается на согласованность версий, чтобы избежать проблем несовместимости».
Чтобы избежать подобных проблем в будущем, Маотоху рекомендует вам:
Вопрос 1: Брат Кот, как проверить, какая версия JDK требуется для зависимой библиотеки?
A1: Обычно в документации зависимой библиотеки четко указано, что JDK-версия поддерживается. А еще голова кошки тигр, предлагаю вам проверить библиотеку зависимостей. release notes,Большинство библиотек перечисляют требования JDK при выпуске новой библиотеки.
Q2: Могу ли я использовать несколько JDK-версий одновременно?
A2: Конечно, используйте SDKMAN или JEnv Вы можете легко управлять несколькими JDK-версиями, а также динамически переключаться между разными проектами.
В этой статье анализируются JDK и Javac. Причины несоответствия API NoSuchFieldError
вопрос,Предоставляет комплексные решения,включая то, какисследоватьиобновлениеJDK-версия、Очистить проект、И чтобы избежать подобных проблем в будущем.
будущее, с Комплексная разработка ИИ По мере роста спроса разработчикам необходимо уделять больше внимания среде разработки и управлению библиотекой зависимостей. голова кошки Тигр рекомендует всем сохранять техническую деликатность,Своевременное обновление зависимостей проекта,Избегайте препятствий в разработке, вызванных проблемами версии.
🐯 Маотоху будет расти вместе с вами, и технологиям нет предела!