IntelliJ IDE не может найти javax.annotation.processing.Generated символ, хотя тест mvn работает правильно

У меня возникла проблема с конфигурацией проекта, запуском программы и модульным тестом. При запуске с mvn test тест JUnit выполняется правильно, но при выполнении из IntelliJ IDE он выдает:

## JPS Errors Summary
java:ERROR:cannot find symbol
  symbol:   class Generated
  location: package javax.annotation.processing; file: /home/api/target/generated-sources/annotations/org/example/core/user/model/User_.java at (3:35)
java:ERROR:cannot find symbol
  symbol: class Generated; file: /home/api/target/generated-sources/annotations/org/example/core/user/model/User_.java at (6:2)

Вот зависимости POM от Datanucleus:

<dependency>
    <groupId>javax.persistence</groupId>
    <artifactId>javax.persistence-api</artifactId>
    <version>2.2</version>
</dependency>
<dependency>
    <groupId>javax.annotation</groupId>
    <artifactId>javax.annotation-api</artifactId>
    <version>1.3.2</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>org.datanucleus</groupId>
    <artifactId>datanucleus-core</artifactId>
    <version>5.2.11</version>
</dependency>
<dependency>
    <groupId>org.datanucleus</groupId>
    <artifactId>datanucleus-rdbms</artifactId>
    <version>5.2.11</version>
</dependency>
<dependency>
    <groupId>org.datanucleus</groupId>
    <artifactId>datanucleus-api-jpa</artifactId>
    <version>5.2.8</version>
</dependency>
<dependency>
    <groupId>org.datanucleus</groupId>
    <artifactId>datanucleus-jpa-query</artifactId>
    <version>5.0.5</version>
</dependency>
<!-- Plugins -->
<plugin>
    <groupId>org.datanucleus</groupId>
    <artifactId>datanucleus-maven-plugin</artifactId>
    <version>5.2.1</version>
    <configuration>
        <api>JPA</api>
        <persistenceUnitName>test-pu</persistenceUnitName>
        <log4jConfiguration>${basedir}/log4j.properties</log4jConfiguration>
        <verbose>true</verbose>
    </configuration>
    <executions>
        <execution>
            <phase>process-classes</phase>
            <goals>
                <goal>enhance</goal>
            </goals>
        </execution>
    </executions>
</plugin>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.1</version>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
        <encoding>UTF-8</encoding>
        <annotationProcessorPaths>
            <path>
                <groupId>javax.annotation</groupId>
                <artifactId>javax.annotation-api</artifactId>
                <version>1.3.2</version>
            </path>
        </annotationProcessorPaths>
    </configuration>
</plugin> 

Убедитесь, что для версии Java проекта Intellij установлена ​​правильная версия. baeldung.com/intellij-change-java-version

Stephen C 20.07.2024 08:24

Если mvn test работает, то выполнение той же фазы из IntelliJ тоже должно работать. Есть ли у вас делегирование IntelliJ задач сборки Maven (например, путем создания конфигурации запуска, которая выполняет этап/цель Maven)?

Slaw 20.07.2024 12:48

@quarks Примечание. IntelliJ извлекает многие конфигурации проекта из POM. Я вижу, вы настроили плагин maven-compiler для использования 1.8 для source и target. Если вы используете Java 11, попробуйте установить для этих свойств значение 11 (также рассмотрите возможность настройки выпуска вместо source и target).

Slaw 20.07.2024 12:57

@Slaw Я имею в виду, что «Проект сборки» в IntelliJ не работает, и, следовательно, он не будет работать с использованием IntelliJ, и, кстати, я также использую Jetbrains Fleet для более плавного и легкого программирования на Java.

quarks 20.07.2024 15:30

Даже при использовании Fleet большинство, если не все, задач сборки следует делегировать инструменту сборки (в данном случае Maven).

Slaw 21.07.2024 01:02
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
5
72
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Решение состоит в том, чтобы понизить версию JVM с 11 до 8. Затем сначала запустить mvn datanucleus:enhance перед запуском сборки IDE (например, запустить или протестировать). Для maven улучшение выполняется автоматически.

Другие вопросы по теме