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

Ho un problema quando distribuisco un’applicazione web con 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.(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 

Con Hibernate 4 tutto è OK.

Ho dato un’occhiata alla class NamedQueryRepository alla riga 149. Quella class sta chiamando il metodo debugf in questo modo

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

Non riesco a vedere il problema

Ecco il mio albero delle dipendenze

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

Nel pesce di vetro Questo problema è causato dalla collisione con dipendenze dei moduli glassfish. Se si controlla l’elenco di lib in glassfishdir / modules, si vedrà boss-logging.jar. Puoi eliminarlo e sostituirlo con il più recente come org.jboss.logging: jboss-logging: jar: 3.3.0.Final. Ha funzionato per me.

Nel mio caso il colpevole era l’artefatto del validatore di fagioli Jersey. Una delle sue dipendenze, bean-validation-2.4.0-b06.jar contiene le classi di registrazione Jboss, per qualche motivo. Ho dovuto escludere la convalida del bean jersey e gli artefatti del bean-validator dalla dipendenza spring-boot-starter-jersey:

  org.springframework.boot spring-boot-starter-jersey   jersey-bean-validation org.glassfish.jersey.ext   bean-validator org.glassfish.hk2.external    

EDIT: A partire da spring-boot 1.3.0, questo è fisso e le esclusioni di cui sopra non sono più necessarie.

Prova ad aggiornare jboss-logging.jar a una versione più recente. Quello che stai usando non sembra essere compatibile con Hibernate 5.

Ho anche affrontato questo tipo di problema quando ho installato sul server weblogic. Apparentemente, weblogic usa anche il sistema di registrazione jboss e usa la vecchia versione di esso.
La mia correzione:
Aggiungi “weblogic-application.xml” alla cartella META-INF con questo contenuto:

     org.jboss.logging.*   org/jboss/logging/Logger.class   

Stavo ottenendo lo stesso errore usando jersey-spring-3 e hibernate 5.0.1.Final.Excluding org.glassfish.hk2.external: bean-validator di jersy-spring-3 e aggiungendo org.glassfish.jersey.ext: jersey- la validazione dei bean ha funzionato per me. Ecco la mia dipendenza finale.

  org.glassfish.jersey.ext jersey-spring3 2.22.2   org.glassfish.hk2.external bean-validator     org.glassfish.jersey.ext jersey-bean-validation 2.22.2  

a partire dal :

  org.glassfish.jersey.ext jersey-spring3 2.22.2  

Controlla la mia risposta a NoSuchMethodError: org.jboss.logging.Logger.debugf

Anche io stavo avendo problemi dopo l’aggiornamento a Hibernate 5.2, e il colpevole era “jboss-logging 3.3.0.Final” che vedo presente anche nelle tue dipendenze. Seguendo i passaggi sul link condiviso nella risposta, è ansible ridurre la dipendenza jboss-logging al livello 3.2 che ha la funzione richiesta.

Con ogni probabilità hai un JAR JBoss Logging obsoleto sul classpath dell’applicazione. I metodi ...f sono un’aggiunta relativamente nuova all’API di Logger. Hibernate 5 dipende direttamente dalla versione 3.3.0 del logging, ma è ansible che nel tuo pom.xml sia presente una dipendenza prevalente rispetto a una versione precedente. Un’altra possibilità è che si sta eseguendo la distribuzione in un contenitore JBoss in cui l’API di registrazione è fornita dal contenitore. Quindi potrebbe essere necessario aggiornare il server JBoss o introdurre una soluzione alternativa per preferire le classi fornite dall’applicazione.

Anch’io ho affrontato questo problema. Questo è ciò che ha risolto per me

   org.springframework spring-core 4.2.1.RELEASE   commons-logging commons-logging    

Ho lo stesso problema con spring4.2.1 + hibernate5.0.2 + jersey2.23.1. La mia soluzione è la stessa: Escludendo org.glassfish.hk2.external:bean-validator da jersy-spring-3 e aggiungendo org.glassfish.jersey.ext:jersey-bean-validation .

  org.glassfish.jersey.ext jersey-spring3 2.23.1   org.glassfish.hk2.external bean-validator     org.glassfish.jersey.ext jersey-bean-validation 2.23.1  

Nell’ambiente del mio prodotto, basta eliminare bean-validator-2.4.0-b34.jar e aggiungere jersey-bean-validation-2.23.1.jar

Questo può essere causato se include una dipendenza

  org.eclipse.persistence eclipselink 2.6.2  

Escludilo usando un elemento di exclusions in dependency .

Nel mio caso il problema è stato causato da una versione precedente di jboss-logging in arrivo come dipendenza transitiva da hibernate-ehcache, che ho trovato esaminando l’albero delle dipendenze maven. Ho risolto aggiungendo l’esclusione:

   org.hibernate hibernate-ehcache ${hibernate.version}   org.jboss.logging jboss-logging    

JBoss 6.1+ ??

Ho impostato org.jboss.logging per jboss-logging-3.3.0.Final-redhat-1.jar nei moduli di jboss.

Funziona per me.

Att.,