Intellij Idea 添加Hibernate元模型类后,在maven模块中使用IntelliJ时,JUnit测试失败并出现Java错误

j8yoct9x  于 2022-12-11  发布在  Maven
关注(0)|答案(2)|浏览(166)

在我的项目中,我们使用Hibernate的(JPA)Metamodel Generator来使我们的Criteria查询类型安全。它在我们的应用程序中运行得很好,但是,当我们使用IDE在Maven模块中运行JUnit测试时,它们会失败,并出现以下错误:-
Error:java: Annotation processor 'org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor' not found
我猜这是由于以下在我们生成的类:-
@Generated(value = "org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor") @StaticMetamodel(MyEntity.class)
当Maven将测试作为构建过程的一部分运行时,它们完全没有问题。
我怀疑我的IDE(IntelliJ IDEA 14)的设置中缺少了一些东西。您知道这可能是什么吗?或者我在Maven中做错了什么?:-

<plugin>
            <groupId>org.bsc.maven</groupId>
            <artifactId>maven-processor-plugin</artifactId>
            <version>2.1.0</version>
            <executions>
                <execution>
                    <id>process</id>
                    <goals>
                        <goal>process</goal>
                    </goals>
                    <phase>generate-sources</phase>
                    <configuration>
                        <processors>
                            <processor>org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor</processor>
                        </processors>
                    </configuration>
                </execution>
            </executions>
            <dependencies>
                <dependency>
                    <groupId>org.hibernate</groupId>
                    <artifactId>hibernate-jpamodelgen</artifactId>
                    <version>4.3.4.Final</version>
                    <optional>true</optional>
                </dependency>
            </dependencies>
        </plugin>
vc9ivgsu

vc9ivgsu1#

我在升级到IntelliJ IDEA 14.1.2后遇到了类似的问题。对我来说,以下操作解决了该问题:
转到设置〉构建、执行、部署〉编译器〉注解处理器。
在这个配置面板的左边,我有一个**Annotation profile,用于我的项目中的每个maven模块。我自己没有设置这些配置文件:也许它们是由IDE推断出来的。我不知道,但是在某些注解配置文件中,启用注解处理flag是启用的。而且,在某些情况下,JPAMetaModelEntityProcessor在这里被显式地列为注解处理器。在从配置文件中删除注解处理器并禁用checkbox之后,错误消失了,我的测试成功运行。

zhte4eai

zhte4eai2#

@Jeroen Noels的回答禁用了IDEA中的注解处理。
为了使其保持启用状态,我添加了

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-jpamodelgen</artifactId>
    <version>4.3.4.Final</version>
    <scope>provided</scope>
</dependency>

Maven依赖项,即类路径。请注意,范围是provided

相关问题