Eclipselink class "javax.persistence.PersistenceUtil" 的签名者信息与同一包中其他 class 的签名者信息不匹配

Eclipselink class "javax.persistence.PersistenceUtil"'s signer information does not match signer information of other classes in the same package

当我尝试创建 EntityManager 时,我遇到了这个异常:

java.lang.SecurityException: class "javax.persistence.PersistenceUtil"'s signer information does not match signer information of other classes in the same package

可能是 javax.persistence 软件包的问题,​​但我不知道该如何解决。

    public static EntityManager getEntityManager() {
    if(emf == null) {
        emf = Persistence.createEntityManagerFactory("AccountsManager");
    }
    return emf.createEntityManager();
}

这是 persistence.xml 文件

  <?xml version="1.0" encoding="UTF-8"?>
  <persistence version="2.1" 
  xmlns="http://xmlns.jcp.org/xml/ns/persistence" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence 
   http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="AccountsManager" transaction- 
                                  type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <class>model.Account</class>
    <class>model.AllSubscription</class>
    <class>model.Client</class>
</persistence-unit>

我发现了类似的问题,但没有找到任何解决方案。

在我阅读了所有可能的类似主题后,我想通了。

在当前版本的 eclipselink(2.7.4) 中,如果添加 jakarta.persistence_2.2.2.jar 以及 eclipselink.jar,就会出现此问题。两个罐子都有一些 类 和同名的包。为了解决这个问题,您必须在 eclipselink.jar 之前添加 jakarta.persistence_2.2.2.jar。所以所有 类 都不是部分来自雅加达。

我不完全理解这两个库如何相互作用,但替换构建路径中的顺序很有帮助。

jakarta.persistence_2.2.2.jar替换为jakarta.persistence-2.2.3.jar 来自 maven repository.