Подтвердить что ты не робот

Hibernate 5 java.lang.NoSuchMethodError org.jboss.logging.Logger.debugf

У меня проблема при развертывании webapp с hibernate 5

Caused by: java.lang.NoSuchMethodError: org.jboss.logging.Logger.debugf(Ljava/lang/String;I)V
at org.hibernate.internal.NamedQueryRepository.checkNamedQueries(NamedQueryRepository.java:149) [hibernate-core-5.0.0.CR2.jar:5.0.0.CR2]
at org.hibernate.internal.SessionFactoryImpl.checkNamedQueries(SessionFactoryImpl.java:759) [hibernate-core-5.0.0.CR2.jar:5.0.0.CR2]
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:490) [hibernate-core-5.0.0.CR2.jar:5.0.0.CR2]
at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:444) [hibernate-core-5.0.0.CR2.jar:5.0.0.CR2]
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:708) [hibernate-core-5.0.0.CR2.jar:5.0.0.CR2]
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:724) [hibernate-core-5.0.0.CR2.jar:5.0.0.CR2]
at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.java:372) [spring-orm-4.1.7.RELEASE.jar:4.1.7.RELEASE]
at org.springframework.orm.hibernate4.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:454) [spring-orm-4.1.7.RELEASE.jar:4.1.7.RELEASE]
at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:439) [spring-orm-4.1.7.RELEASE.jar:4.1.7.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1633) [spring-beans-4.1.7.RELEASE.jar:4.1.7.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1570) [spring-beans-4.1.7.RELEASE.jar:4.1.7.RELEASE]
... 23 more

С Hibernate 4 все в порядке.

Я просмотрел класс NamedQueryRepository в строке 149. Этот класс вызывает метод debugf таким образом

        log.debugf( "Checking %s named HQL queries", namedQueryDefinitionMap.size() );

Я не вижу проблемы

Вот мое дерево зависимостей

[INFO] ------------------------------------------------------------------------
[INFO] Building app Maven Webapp 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ app---
[INFO] +- org.springframework:spring-aspects:jar:4.1.7.RELEASE:compile
[INFO] |  \- org.aspectj:aspectjweaver:jar:1.8.6:compile
[INFO] +- org.springframework:spring-tx:jar:4.1.7.RELEASE:compile
[INFO] +- org.springframework:spring-beans:jar:4.1.7.RELEASE:compile
[INFO] +- org.springframework:spring-context-support:jar:4.1.7.RELEASE:compile
[INFO] +- org.springframework:spring-context:jar:4.1.7.RELEASE:compile
[INFO] |  \- org.springframework:spring-expression:jar:4.1.7.RELEASE:compile
[INFO] +- org.springframework:spring-core:jar:4.1.7.RELEASE:compile
[INFO] |  \- commons-logging:commons-logging:jar:1.2:compile
[INFO] +- org.springframework:spring-orm:jar:4.1.7.RELEASE:compile
[INFO] +- org.springframework:spring-web:jar:4.1.7.RELEASE:compile
[INFO] +- org.springframework:spring-aop:jar:4.1.7.RELEASE:compile
[INFO] |  \- aopalliance:aopalliance:jar:1.0:compile
[INFO] +- org.springframework:spring-jdbc:jar:4.1.7.RELEASE:compile
[INFO] +- org.springframework:spring-test:jar:4.1.7.RELEASE:test
[INFO] +- junit:junit:jar:4.12:test
[INFO] |  \- org.hamcrest:hamcrest-core:jar:1.3:test
[INFO] +- org.hibernate:hibernate-entitymanager:jar:5.0.0.CR2:compile
[INFO] |  +- org.jboss.logging:jboss-logging:jar:3.3.0.Final:compile
[INFO] |  +- org.hibernate:hibernate-core:jar:5.0.0.CR2:compile
[INFO] |  |  +- antlr:antlr:jar:2.7.7:compile
[INFO] |  |  \- org.jboss:jandex:jar:1.2.2.Final:compile
[INFO] |  +- dom4j:dom4j:jar:1.6.1:compile
[INFO] |  |  \- xml-apis:xml-apis:jar:1.0.b2:compile
[INFO] |  +- org.hibernate.common:hibernate-commons-annotations:jar:5.0.0.Final:compile
[INFO] |  +- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:jar:1.0.0.Final:compile
[INFO] |  +- org.apache.geronimo.specs:geronimo-jta_1.1_spec:jar:1.1.1:compile
[INFO] |  \- org.javassist:javassist:jar:3.18.1-GA:compile
[INFO] +- org.hibernate:hibernate-c3p0:jar:5.0.0.CR2:compile
[INFO] |  \- com.mchange:c3p0:jar:0.9.2.1:compile
[INFO] |     \- com.mchange:mchange-commons-java:jar:0.2.3.4:compile
[INFO] +- org.primefaces:primefaces:jar:5.2.RC3:compile
[INFO] +- org.apache.logging.log4j:log4j-api:jar:2.2:compile
[INFO] +- org.apache.logging.log4j:log4j-core:jar:2.2:compile
[INFO] \- net.sourceforge.jtds:jtds:jar:1.2.8:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
4b9b3361

Ответ 1

В стеклянной рыбе Эта проблема вызвана столкновением с зависимостями модулей стеклянной рыбы. Если вы проверите список lib в glassfishdir/modules, вы увидите boss-logging.jar. Вы можете удалить его и заменить последним, например org.jboss.logging: jboss-logging: jar: 3.3.0.Final. Это сработало для меня.

Ответ 2

В моем случае виновником стал артефакт валидатора Джерси bean. Одна из его зависимостей bean -validation-2.4.0-b06.jar по какой-то причине содержит классы ведения журнала Jboss. Я должен был исключить артефакты jersey- bean -validation и bean -validator из зависимости spring -boot-starter-jersey:

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jersey</artifactId>
        <exclusions>
            <exclusion>
                <artifactId>jersey-bean-validation</artifactId>
                <groupId>org.glassfish.jersey.ext</groupId>
            </exclusion>
            <exclusion>
                <artifactId>bean-validator</artifactId>
                <groupId>org.glassfish.hk2.external</groupId>
            </exclusion>
        </exclusions>
    </dependency>

EDIT: Начиная с spring -boot 1.3.0, это фиксировано, и вышеперечисленные исключения больше не нужны.

Ответ 3

Попробуйте обновить jboss-logging.jar до более новой версии. Тот, который вы используете, кажется, не совместим с Hibernate 5.

Ответ 4

Я получал ту же ошибку, используя jersey- spring -3 и hibernate 5.0.1.Final.Excluding org.glassfish.hk2.external: bean -validator от jersy- spring -3 и добавление org.glassfish.jersey.ext: jersey- bean -валификация работала для меня. Вот моя последняя зависимость.

<dependency>
    <groupId>org.glassfish.jersey.ext</groupId>
    <artifactId>jersey-spring3</artifactId>
    <version>2.22.2</version>
    <exclusions>
        <exclusion>
            <groupId>org.glassfish.hk2.external</groupId>
            <artifactId>bean-validator</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.glassfish.jersey.ext</groupId>
    <artifactId>jersey-bean-validation</artifactId>
    <version>2.22.2</version>
</dependency>

from:

<dependency>
    <groupId>org.glassfish.jersey.ext</groupId>
    <artifactId>jersey-spring3</artifactId>
    <version>2.22.2</version>
</dependency>

Ответ 5

Я также столкнулся с такой проблемой при развертывании уха на сервере weblogic. По-видимому, weblogic также использует систему ведения журналов jboss и использует старую версию.
Мое исправление:
Добавьте "weblogic-application.xml" в папку META-INF с этим контентом:

    <?xml version="1.0" encoding="UTF-8"?>
    <weblogic-application>
        <prefer-application-packages>
            <package-name>org.jboss.logging.*</package-name>
        </prefer-application-packages>

        <prefer-application-resources>
            <resource-name>org/jboss/logging/Logger.class</resource-name>
        </prefer-application-resources>
    </weblogic-application>

Ответ 6

По всей вероятности, у вас есть устаревшая JARB Logging JAR на пути к классу приложений. Методы ...f являются относительно новым дополнением к API Logger. Hibernate 5 напрямую зависит от версии ведения журнала 3.3.0, но возможно, что некоторые из ваших pom.xml у вас есть переопределяющая зависимость от более ранней версии. Другая возможность заключается в том, что вы развертываете контейнер JBoss, где API протоколирования предоставляется контейнером. Затем вам может потребоваться обновить сервер JBoss или ввести обходной путь, чтобы предпочесть классы, предоставленные вашим приложением.

Ответ 7

Проверьте мой ответ на NoSuchMethodError: org.jboss.logging.Logger.debugf

Даже после проблем с обновлением до Hibernate 5.2 у меня возникли проблемы, и виновником был "jboss-logging 3.3.0.Final", который я вижу и в ваших зависимостях. Следуя шагам по общей ссылке в ответе, вы можете уменьшить зависимость jboss-logging до уровня 3.2, который имеет требуемую функцию.

Ответ 8

У меня была такая же ошибка, она сначала решается добавить зависимость jboss logging jar следующим образом

<!-- https://mvnrepository.com/artifact/org.jboss.logging/jboss-logging -->
<dependency>
    <groupId>org.jboss.logging</groupId>
    <artifactId>jboss-logging</artifactId>
    <version>3.3.0.Final</version>
</dependency>

И если ошибка все еще существует, добавьте следующее исключение к зависимости maven.

<dependency>
    <groupId>org.glassfish.jersey.ext</groupId>
    <artifactId>jersey-spring3</artifactId>
    <version>2.12</version>
     <exclusions>
            <exclusion>
                    <groupId>org.glassfish.hk2</groupId>
                    <artifactId>hk2</artifactId>
            </exclusion>
        </exclusions>
</dependency>

После выполнения этих двух вещей, это работает хорошо для меня. Я надеюсь, что это будет работать и для вас.

Ответ 9

Я тоже столкнулся с этой проблемой. Это то, что зафиксировало это для меня

       <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>4.2.1.RELEASE</version>
            <exclusions>
                <exclusion>
                    <groupId>commons-logging</groupId>
                    <artifactId>commons-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

Ответ 10

У меня такая же проблема с spring4.2.1 + hibernate5.0.2 + jersey2.23.1. Мое решение такое же: исключая org.glassfish.hk2.external:bean-validator из jersy-spring-3 и добавляя org.glassfish.jersey.ext:jersey-bean-validation.

<dependency>
  <groupId>org.glassfish.jersey.ext</groupId>
  <artifactId>jersey-spring3</artifactId>
  <version>2.23.1</version>
  <exclusions>
    <exclusion>
      <groupId>org.glassfish.hk2.external</groupId>
      <artifactId>bean-validator</artifactId>
    </exclusion>
  </exclusions>
</dependency>
<dependency>
  <groupId>org.glassfish.jersey.ext</groupId>
  <artifactId>jersey-bean-validation</artifactId>
  <version>2.23.1</version>
</dependency>

В моей рабочей среде просто удалите bean-validator-2.4.0-b34.jar и добавьте jersey-bean-validation-2.23.1.jar

Ответ 11

Это может быть вызвано, если зависимость включает

<dependency>
    <groupId>org.eclipse.persistence</groupId>
    <artifactId>eclipselink</artifactId>
    <version>2.6.2</version>
</dependency>

Исключить его с помощью элемента exclusions в dependency.

Ответ 12

В моем случае проблема была вызвана тем, что более ранняя версия jboss-logging стала транзитивной зависимостью от hibernate-ehcache, которую я нашел, посмотрев в дерево зависимостей maven. Я решил это, добавив исключение:

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-ehcache</artifactId>
        <version>${hibernate.version}</version>
        <exclusions>
            <exclusion>
                <groupId>org.jboss.logging</groupId>
                <artifactId>jboss-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

Ответ 13

JBoss 6.1 +??

Я установил org.jboss.logging для jboss-logging-3.3.0.Final-redhat-1.jar в модулях jboss.

Его работы для меня.

Att.,

Ответ 14

Ошибка, которую я получил, была

Application run failed: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.jboss.logging.Logger.debugf(Ljava/lang/String;I)V

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

я удалил папку jboss-logging < .m2\repository\org\jboss\logging\jboss-logging > и перезапустил сервер jboss.

Банки были добавлены обратно, и ошибка исчезла. (после этого я получил другую ошибку, но, по крайней мере, эта ошибка исчезла)

Ответ 15

Вы можете использовать Eclipse, чтобы узнать, какой jar вызывает проблему:

  • Настройте проект со всеми вашими банками на пути к классам
  • Навигация → Открыть тип...
  • Введите org.jboss.logging.Logger

Это даст вам список банок, которые включают в себя класс. Один из них устарел и должен быть исключен (см. Другие ответы на этот вопрос).