wake-up-neo.com

Ruhezustand 5 Java.lang.NoSuchMethodError org.jboss.logging.Logger.debugf

Ich habe ein Problem, wenn ich eine Webapp mit Hibernate 5 bereitstelle

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

Mit Hibernate 4 ist alles in Ordnung. 

Ich habe mir die Klasse NamedQueryRepository in Zeile 149 angesehen. Diese Klasse ruft die Methode debugf auf diese Weise auf 

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

Ich kann das Problem nicht sehen

Hier ist mein Abhängigkeitsbaum

[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] ------------------------------------------------------------------------
34
Jago Satori

Bei Glasfischen Dieses Problem wird durch Kollisionen mit Abhängigkeiten von Glassfish-Modulen verursacht. Wenn Sie die lib-Liste in glassfishdir/modules überprüfen, wird boss-logging.jar angezeigt. Sie können es löschen und durch aktuelle wie org.jboss.logging ersetzen: jboss-logging: jar: 3.3.0.Final. Es hat für mich funktioniert.

30
Ekrem Kucuk

In meinem Fall war der Täter das Jersey-Bean-Validator-Artefakt . Eine seiner Abhängigkeiten, Bean-Validation-2.4.0-b06.jar, enthält aus irgendeinem Grund Jboss-Protokollierungsklassen. Ich musste die Trikot-Bean-Validierung und die Bean-Validator-Artefakte aus der Spring-Boot-Starter-Jersey-Abhängigkeit ausschließen:

<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>

BEARBEITEN: Ab Spring-Boot 1.3.0 ist dieses Problem behoben und die obigen Ausschlüsse sind nicht mehr erforderlich.

16
Daniel Nitzan

Aktualisieren Sie jboss-logging.jar auf eine neuere Version. Die von Ihnen verwendete scheint mit Hibernate 5 nicht kompatibel zu sein.

14
David Levesque

Ich war auch mit solchen Problemen konfrontiert, als ich das Ohr auf einem Weblogic-Server installierte . Anscheinend verwendet Weblogic auch das Jboss-Protokollierungssystem und verwendet eine alte Version davon.
Mein Fix:
Füge "weblogic-application.xml" zum META-INF-Ordner mit diesem Inhalt hinzu:

    <?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>
3
Evgeniy

Ich habe den gleichen Fehler mit jersey-spring-3 und hibernate 5.0.1.Final.Exkludiert. Bean-Validierung hat für mich funktioniert. Hier ist meine endgültige Abhängigkeit.

<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>

von :

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

Überprüfen Sie meine Antwort unter NoSuchMethodError: org.jboss.logging.Logger.debugf

Selbst nach dem Upgrade auf Hibernate 5.2 hatte ich Probleme, und der Täter war "jboss-logging 3.3.0.Final", was ich auch in Ihren Abhängigkeiten als vorhanden sehe . Wenn Sie die Schritte auf dem in der Antwort angegebenen Link ausführen, können Sie dies tun Reduzieren Sie die Abhängigkeits-JBoss-Protokollierung auf die Stufe 3.2, die die erforderliche Funktion hat.

2
Keshav

Wahrscheinlich befindet sich im Klassenpfad der Anwendung eine veraltete JBoss-Protokollierungs-JAR. Die ...f-Methoden sind eine relativ neue Ergänzung der Logger-API. Der Ruhezustand 5 hängt direkt von der Logging-Version 3.3.0 ab. Möglicherweise haben Sie jedoch in Ihrem pom.xml eine übergeordnete Abhängigkeit von einer früheren Version. Eine andere Möglichkeit besteht darin, dass Sie die Bereitstellung in einem JBoss-Container vornehmen, in dem die Protokollierungs-API vom Container bereitgestellt wird. Dann müssen Sie möglicherweise den JBoss-Server aktualisieren oder eine Problemumgehung einführen, um Klassen zu bevorzugen, die von Ihrer Anwendung beigesteuert werden.

2
Marko Topolnik

Auch ich habe mich diesem Problem gestellt. Das hat es für mich behoben 

       <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>
0
himangshuj

JBoss 6.1+?

Ich setze org.jboss.logging für jboss-logging-3.3.0.Final-redhat-1.jar in Modulen von jboss.

Es funktioniert für mich.

Att.,

0
Tiago Pereira

Dies kann verursacht werden, wenn eine Abhängigkeit beinhaltet

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

Schließen Sie es mit einem exclusions-Element in dependency aus.

0
Karl Richter

Mit Eclipse können Sie herausfinden, welches Glas das Problem verursacht:

  • Richten Sie ein Projekt mit all Ihren Gläsern auf dem Klassenpfad ein
  • Navigieren -> Typ öffnen ...
  • Eintippen org.jboss.logging.Logger

Dies gibt Ihnen eine Liste von Gläsern, die die Klasse enthalten. Eine davon ist veraltet und muss ausgeschlossen werden (Variationen hierzu finden Sie in den anderen Antworten).

0
WW.

Ich habe das gleiche Problem mit spring4.2.1 + hibernate5.0.2 + jersey2.23.1 . Meine Lösung ist die gleiche: Ohne org.glassfish.hk2.external:bean-validator von jersy-spring-3 und Hinzufügen von 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>

Löschen Sie in meiner Produktumgebung einfach bean-validator-2.4.0-b34.jar und fügen Sie jersey-bean-validation-2.23.1.jar hinzu.

0
RJ.Hwang

Ich hatte den gleichen Fehler, es wird von .__ gelöst. Fügen Sie zunächst die Abhängigkeit des jboss-Protokollierungsglases wie folgt hinzu

<!-- 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>

Wenn der Fehler weiterhin besteht, fügen Sie der Maven-Abhängigkeit folgende Exklusion hinzu.

<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>

Nachdem ich diese beiden Dinge getan habe, funktioniert es gut für mich. Ich hoffe, dass es auch für Sie funktioniert.

0
Prakhar Agrawal

In meinem Fall wurde das Problem durch eine ältere Version von jboss-logging verursacht, die als transitive Abhängigkeit von hibernate-ehcache auftrat. Ich habe es gelöst, indem ich den Ausschluss hinzugefügt habe:

    <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>
0
raspacorp

Fehler, den ich bekam war "

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"

ich habe den JBoss-Logging-Ordner <.m2\repository\org\jboss\logging\jboss-logging> gelöscht und den JBoss-Server neu gestartet.

Die Gläser wurden addiert und der Fehler war verschwunden. (Ich habe danach einen anderen Fehler bekommen, aber zumindest war dieser Fehler weg)

0
Barani r