首页 > 解决方案 > javax.persistence.EntityManager 类型不可访问

问题描述

我在 Eclipse 上的 maven 项目突然产生了上述错误,即使该项目在错误弹出之前已经成功运行。所有必需的依赖项都已添加到 pom.xml 文件中,项目运行正常,但出现此错误,我不知道是什么原因造成的。我试图删除并添加依赖项,但错误仍然存​​在。这种相同类型的错误让我安装了新的 Eclipse IDE(面向 Java 开发人员的 Eclipse IDE 2021-06)并小心地将文件传输到新的 IDE。该项目在新的 IDE 中运行良好几天,然后突然再次产生相同的错误。请问发生了什么,我该如何解决这个问题?您的指南将不胜感激。下面是我的 Maven 依赖项的屏幕截图:

我的 Maven 依赖项的屏幕截图

我的 pom.xml 文件中的依赖项如下:

<dependencies>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>15.0.1</version>
    </dependency>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-fxml</artifactId>
        <version>15.0.1</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>5.5.7.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>5.5.7.Final</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.hibernate.javax.persistence/hibernate-jpa-2.1-api -->
    <dependency>
        <groupId>org.hibernate.javax.persistence</groupId>
        <artifactId>hibernate-jpa-2.1-api</artifactId>
        <version>1.0.2.Final</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/javax.persistence/javax.persistence-api -->
    <dependency>
        <groupId>javax.persistence</groupId>
        <artifactId>javax.persistence-api</artifactId>
        <version>2.2</version>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.23</version>
    </dependency>
    <dependency>
        <groupId>com.jfoenix</groupId>
        <artifactId>jfoenix</artifactId>
        <version>9.0.10</version>
    </dependency>
</dependencies>

标签: javaeclipsemavenjpadependencies

解决方案


经过几次尝试,我已经能够解决问题。我通过删除 pom.xml 文件中的依赖项条目从 Maven 依赖项中删除了 javax.persistence-api-2.2 jar。我决定这样做是因为我发现 hibernate-jpa-2.1-api-1.0.2.Final.jar 也有 javax.persistence 包,其中包含持久性操作所需的所有类。我立即刷新我的项目,javax.persistence-api-2.2 jar 被删除并且错误消失了。我认为在我的声明中使用哪个 javax.persistence 可能存在冲突:javax.persistence-api-2.2 jar 或 hibernate-jpa-2.1-api-1.0.2.Final.jar 中的那个。也许它引用了不适用的前者-但是,我不太确定这个原因,但是当我删除 javax.persistence-api-2.2 jar 时它起作用了。


推荐阅读