当前位置: 首页 > 知识库问答 >
问题:

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

宋畅
2023-03-14

在我的项目中,我们使用了Hibernate(JPA)元模型生成器来使我们的标准查询类型安全。在我们的应用程序中,这一切都很有效,但是,当我们使用我们的集成开发环境在Maven模块中运行JUnit测试时,它们现在会失败,出现以下错误:-

错误:java:Annotation processor'org。冬眠杰帕莫代尔根。找不到JPAMetaModelEntityProcessor

我猜这是由于我们生成的类中的以下原因:-

@Generated(value=“org.hibernate.jpamodelgen.jpametamodelenticyprocessor”)@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>

共有2个答案

裴实
2023-03-14

@Jeroen Noels的答案禁用IDEA中的注释处理。

为了保持启用状态,我添加了

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

Maven依赖项,即类路径。请注意,范围是提供的!

程智明
2023-03-14

升级到IntelliJ IDEA 14.1.2后,我也遇到了类似的问题。对我来说,以下操作解决了这个问题:

转到“设置”

在这个配置面板的左侧,我为我的项目中的每个maven模块提供了一个注释配置文件。我自己没有设置这些配置文件:可能它们是由IDE推断出来的。我不知道,但在一些注释配置文件中,启用了enable annotation processing标志。此外,在某些情况下,这里明确列出了JPAMetaModelEntityProcessor作为注释处理器。从配置文件中删除注释处理器并禁用复选框后,错误消失,测试成功运行。

 类似资料:
  • 我有根项目,然后是子模块。这些模块是相互依赖的,当我为一个模块运行maven测试时,它会抛出类未找到异常。 ProjectA --ProjectSubA --ProjectSubB --ProjectSubC(依赖项ProjectA和ProjectB) ProjectSubC有Maven测试,所以当它运行时,类在ProjectSubB和ProjectSubA中。现在如何解决这个问题。

  • 我正在使用Eclipse中的 JUnit5位于modul-path上,并且在module-info.Java中是必需的。 当我尝试运行代码时,总是会收到以下消息: 初始化引导层java.lang.module.findException时出错:无法为C:\users\tim hp.p2\pool\plugins\org.junit.jupiter.migrationsupport_5.0.0.v2

  • 我已经为MNIST分类创建了一个TF-lite模型(我使用TF 1.12.0并在Google Colab上运行它),我想使用TensorFlow Lite Python解释器对其进行测试,如 https://github.com/freedomtan/tensorflow/blob/deeplab_tflite_python/tensorflow/contrib/lite/examples/pyt

  • 我的Junit测试使用DBUnit,从Eclipse运行时运行良好。但是,使用Maven运行相同的测试会导致以下一项测试失败: 我已经连续几次尝试从EclipseGUI(“作为JUnit测试运行”)运行该测试和整个测试集,但它们从未失败——但从Maven来看,它们确实失败了。 我对每个测试都使用@数据库设置,但这足以真正重置数据库吗?我还认为Maven可能会并行运行测试,所以我尝试在pom.xml

  • 问题内容: 我在项目中添加新模块(https://github.com/lomza/android-color- picker )时遇到一个奇怪的错误。没有这个模块,项目运行正常,但是如果将此项目作为模块添加到我的主项目中并进行编译- 一切看起来不错,但是应用启动并强制关闭会立即出现此错误: 33线是 如果我从项目中删除此模块-一切都会再次正常运行。我在向项目添加任何新模块时遇到相同的问题。问题出

  • 我们的项目结构如下: 相关的JUnit测试位于A-A中。在使用Maven之前,我们必须调整Eclipse中的运行配置(将arguments选项卡中的工作目录设置为A-B,启动应用程序),以便在没有错误的情况下启动所有测试。 现在,当我们尝试运行测试时,无论我们是否在Eclipse中运行测试,我们都会从a-a中的类中得到一个 我的猜测是我们有一个错误的配置的POM和Surefire不能找到所有的类文