Информация о подписчике класса Eclipselink класса "javax.persistence.PersistenceUtil" не совпадает с информацией о подписывающей стороне других классов в том же пакете - PullRequest
0 голосов
/ 13 июня 2019

Когда я пытаюсь создать EntityManager, я получаю следующее исключение:

java.lang.SecurityException: информация о подписчике класса "javax.persistence.PersistenceUtil" не соответствует информации о подписывающей стороне других классов в том же пакете

Возможно, это что-то с пакетами 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>

Я нашел похожие вопросы, но не нашел решений.

1 Ответ

0 голосов
/ 13 июня 2019

После того, как я прочитал все возможные похожие темы, я понял это.

В текущей версии eclipselink (2.7.4), если вы добавите jakarta.persistence_2.2.2.jar вместе с eclipselink.jar, эта проблема возникает. Оба jar-файла имеют несколько классов и пакетов с одинаковыми именами. Чтобы это исправить, вы должны добавить jakarta.persistence_2.2.2.jar перед eclipselink.jar. Так что все занятия взяты из Джакарты не частично.

Я не совсем понимаю, как эти две библиотеки взаимодействуют друг с другом, но поменял порядок в пути сборки.

...