java.lang.NoSuchMethodError: org.jboss.logging.Logger.debugf(Ljava/lang/String;I)V Исключение при переходе с 12.1.3 на 12.2

Я выполняю миграцию с JDev 12.1.3 на 12.2.0. Теперь возникла проблема во время компиляции, но она была решена путем изменения пути к классу. Теперь, когда я иду на развертывание, он показывает мне одно исключение. То есть ...

"java.lang.NoSuchMethodError: org.jboss.logging.Logger.debugf(Ljava/lang/String;I)V"

Я использую следующие зависимости.

<dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.2.0.Final</version>
            <type>jar</type>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.hibernate.common</groupId>
            <artifactId>hibernate-commons-annotations</artifactId>
            <version>5.0.1.Final</version>
            <type>jar</type>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.hibernate.javax.persistence</groupId>
            <artifactId>hibernate-jpa-2.1-api</artifactId>
            <version>1.0.0.Final</version>
            <type>jar</type>
            <scope>provided</scope>
        </dependency>

Помимо этих зависимостей, я также заглянул в папку «C:\oracle_home12c\wlserver\modules» и обнаружил там один файл «org.jboss.logging.jboss-logging.jar». Я заменил файл репозитория maven с «jboss-logging-3.3.0.Final». Я также просмотрел файл jar «jboss-logging-3.3.0.Final». Существует один файл класса Logger, но он не содержит метод debugf(String).

Тип исключения;

Caused by: java.lang.NoSuchMethodError: org.jboss.logging.Logger.debugf(Ljava/lang/String;I)V
    at org.hibernate.internal.NamedQueryRepository.checkNamedQueries(NamedQueryRepository.java:149)
    at org.hibernate.internal.SessionFactoryImpl.checkNamedQueries(SessionFactoryImpl.java:764)
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:495)
    at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:444)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:802)
    at org.hibernate.jpa.HibernatePersistenceProvider.createContainerEntityManagerFactory(HibernatePersistenceProvider.java:135)
    at weblogic.persistence.BasePersistenceUnitInfo.initializeEntityManagerFactory(BasePersistenceUnitInfo.java:611)

Может кто поможет избавиться от этой проблемы?

заранее спасибо


person Still Learning    schedule 27.06.2016    source источник


Ответы (2)


Если вы используете сервер Glassfish, проблема может быть связана с библиотекой, предоставленной Glassfish. Эта ошибка вызвана использованием несовместимой версии.

Просто создайте файл glassfish-web.xml в каталоге WEB-INF. Содержимое файла показано ниже:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
<glassfish-web-app>
     <class-loader delegate="false"/>
</glassfish-web-app>

Это гарантирует, что Glassfish загружает не свои внутренние библиотеки, а библиотеки из вашего проекта.

person Shadow learner    schedule 08.08.2017

Я не знаю, как работает загрузка классов JDev, но, может быть, для этого нужна неправильная версия jboss-logging, в которой нет этого метода? Попробуйте удалить это из каталога модулей. И убедитесь, что ваше приложение объединяет jboss-loging в файле .war. Это должно быть связано с зависимостями Hibernate. Если нет, добавьте его в pom.xml.

person Ondra Žižka    schedule 14.08.2016