У меня возникла проблема с конфигурацией проекта, запуском программы и модульным тестом. При запуске с 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>
Если mvn test
работает, то выполнение той же фазы из IntelliJ тоже должно работать. Есть ли у вас делегирование IntelliJ задач сборки Maven (например, путем создания конфигурации запуска, которая выполняет этап/цель Maven)?
@quarks Примечание. IntelliJ извлекает многие конфигурации проекта из POM. Я вижу, вы настроили плагин maven-compiler для использования 1.8
для source
и target
. Если вы используете Java 11, попробуйте установить для этих свойств значение 11
(также рассмотрите возможность настройки выпуска вместо source
и target
).
@Slaw Я имею в виду, что «Проект сборки» в IntelliJ не работает, и, следовательно, он не будет работать с использованием IntelliJ, и, кстати, я также использую Jetbrains Fleet для более плавного и легкого программирования на Java.
Даже при использовании Fleet большинство, если не все, задач сборки следует делегировать инструменту сборки (в данном случае Maven).
Решение состоит в том, чтобы понизить версию JVM с 11 до 8. Затем сначала запустить mvn datanucleus:enhance
перед запуском сборки IDE (например, запустить или протестировать). Для maven улучшение выполняется автоматически.
Убедитесь, что для версии Java проекта Intellij установлена правильная версия. baeldung.com/intellij-change-java-version