Hibernate 5でwebappをデプロイすると問題が発生します
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] ------------------------------------------------------------------------
Glass Fishの場合この問題は、glassfishモジュールの依存関係との衝突によって発生します。 glassfishdir/modulesのlibリストを確認すると、boss-logging.jarが表示されます。これを削除して、org.jboss.logging:jboss-logging:jar:3.3.0.Finalなどの最新のものに置き換えることができます。それは私のために働いた。
私の場合、犯人はジャージービーンバリデーターアーティファクトでした。依存関係の1つであるbean-validation-2.4.0-b06.jarには、何らかの理由でJbossロギングクラスが含まれています。 spring-boot-starter-jersey依存関係からjersey-bean-validationおよびbean-validatorアーティファクトを除外する必要がありました。
<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>
編集:スプリングブート1.3.0の時点で、これは修正されており、上記の除外はもう必要ありません。
アップグレードしてみてくださいjboss-logging.jar
より新しいバージョンに。使用しているものは、Hibernate 5と互換性がないようです。
また、weblogicサーバーにearをデプロイすると、この種の問題に直面しました。どうやら、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>
Jersey-spring-3とhibernate 5.0.1.Final.Exers:jersy-spring-3からorg.glassfish.hk2.external:bean-validatorを除外し、org.glassfish.jersey.ext:jersey-を追加すると、同じエラーが発生していましたbean-validationは私のために働いた。ここに私の最終的な依存関係がある。
<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>
から:
<dependency>
<groupId>org.glassfish.jersey.ext</groupId>
<artifactId>jersey-spring3</artifactId>
<version>2.22.2</version>
</dependency>
NoSuchMethodError:org.jboss.logging.Logger.debugf で私の答えを確認してください
Hibernate 5.2にアップグレードした後でも問題が発生し、原因は「jboss-logging 3.3.0.Final」であり、これも依存関係に存在します。回答で共有されたリンクの手順に従って、jboss-loggingの依存関係を必要な機能を持つ3.2レベルに減らすことができます。
おそらく、アプリケーションのクラスパスに古いJBoss Logging JARがあります。 ...f
メソッドは、Logger APIへの比較的新しい追加機能です。 Hibernate 5はLoggingバージョン3.3.0に直接依存していますが、pom.xml
以前のバージョンに優先する依存関係があります。もう1つの可能性は、ロギングAPIがコンテナー提供のJBossコンテナーにデプロイしていることです。次に、JBossサーバーをアップグレードするか、アプリケーションが提供するクラスを優先する回避策を導入する必要があります。
同じエラーが発生しました。まず、jbossロギング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>
これら2つのことをした後、私にとってはうまく機能しています。あなたにとってもうまくいくことを願っています。
私もこの問題に直面しました。これは私のためにそれを修正したものです
<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>
JBoss 6.1+ ??
Jbossのモジュールでjboss-logging-3.3.0.Final-redhat-1.jarのorg.jboss.loggingを設定します。
その作品。
Att。、
これは、依存関係に以下が含まれる場合に発生する可能性があります
<dependency>
<groupId>org.Eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
<version>2.6.2</version>
</dependency>
exclusions
のdependency
要素を使用して除外します。
Eclipseを使用して、どのjarが問題を引き起こしているかを見つけることができます。
org.jboss.logging.Logger
これにより、クラスを含むjarのリストが表示されます。これらの1つは古くなっているため、除外する必要があります(これに関するバリエーションについては、他の回答を参照してください)。
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
を追加するだけです
私の場合、この問題は、javen-loggingの古いバージョンがhibernate-ehcacheからの推移的な依存関係として発生したために発生しました。除外を追加して解決しました:
<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>
私が得たエラーは「
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サーバーを再起動しました。
Jarがaddbackになり、エラーがなくなりました。 (その後、他のエラーが発生しましたが、少なくともこのエラーはなくなりました)