使用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一切正常。
我在第149行查看了类NamedQueryRepository
。该类以这种方式调用方法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] ------------------------------------------------------------------------
答案 0 :(得分:31)
在玻璃鱼中这个问题是由于玻璃鱼模块的依赖性碰撞引起的。如果你检查glassfishdir / modules中的lib列表,你会看到boss-logging.jar。您可以删除它并替换为最新的例如org.jboss.logging:jboss-logging:jar:3.3.0.Final。它对我有用。
答案 1 :(得分:17)
在我的案例中,罪魁祸首是Jersey bean验证工具。 由于某种原因,其中一个依赖项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>
编辑:从spring-boot 1.3.0开始,这是固定的,不再需要上面的排除。
答案 2 :(得分:14)
尝试将jboss-logging.jar
升级到更新版本。您正在使用的那个似乎与Hibernate 5不兼容。
答案 3 :(得分:3)
我使用jersey-spring-3和hibernate 5.0.1.Final.Excluding org.glassfish.hk2.external:来自jersy-spring-3的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>
答案 4 :(得分:3)
在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>
答案 5 :(得分:2)
很可能你在应用程序的类路径上有一个过时的JBoss Logging JAR。 ...f
方法是Logger API的一个相对较新的补充。 Hibernate 5直接依赖于Logging version 3.3.0,但是你的pom.xml
中的某些内容可能与早期版本有重叠依赖关系。另一种可能性是您正在部署到JBoss容器,其中日志API是容器提供的。然后,您可能需要升级JBoss服务器,或者引入一种解决方法来优先选择应用程序提供的类。
答案 6 :(得分:2)
在NoSuchMethodError: org.jboss.logging.Logger.debugf
检查我的回答即使我在升级到Hibernate 5.2之后遇到了问题,但罪魁祸首是&#34; jboss-logging 3.3.0.Final&#34;我看到你的依赖关系也存在。 按照答案中共享的链接上的步骤,您可以将依赖关系jboss-logging减少到具有所需功能的3.2级别。
答案 7 :(得分:1)
我有同样的错误,这可以通过解决 首先,按如下所示添加jboss日志记录罐的依赖项
<!-- 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>
完成这两项操作后,对我来说效果很好。我希望它对 你也是。
答案 8 :(得分:0)
我也遇到过这个问题。这就是为我解决的问题
<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>
答案 9 :(得分:0)
我对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
答案 10 :(得分:0)
如果依赖项包含
,则可能导致此问题<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
<version>2.6.2</version>
</dependency>
使用exclusions
中的dependency
元素排除它。
答案 11 :(得分:0)
在我的情况下,问题是由旧版本的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>
答案 12 :(得分:0)
JBoss 6.1 + ??
我在jboss的模块中为jboss-logging-3.3.0.Final-redhat-1.jar设置了org.jboss.logging。
它适用于我。
ATT。,
答案 13 :(得分:0)
我得到的错误是“
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服务器。
罐子被加回去,错误消失了。 (此后,我还有其他错误,但至少没有这个错误了)
答案 14 :(得分:0)
您可以使用Eclipse找出引起问题的jar:
org.jboss.logging.Logger
这将为您提供一个包含该类的jar列表。其中之一已过时,需要将其排除在外(有关其他变化,请参阅其他答案)。