Spring 4 和 Hibernate 5 给出 NoSuchMethodError org.hibernate.internal.CoreMessageLogger
Spring 4 and Hibernate 5 gives NoSuchMethodError org.hibernate.internal.CoreMessageLogger
所以,我有一个成功的 Spring 4.2.2.RELEASE MVC 网络应用程序与 Hibernate 4.3.8.Final 一起工作。我更改为 Hibernate 5.0。2.Final,并对我的 spring 应用程序上下文文件进行了以下更改。
发件人:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
收件人:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
来自:
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
收件人:
<bean id="transactionManager"
class="org.springframework.orm.hibernate5.HibernateTransactionManager">
我在网络上的其他任何地方都找不到这个问题。我确定我检查了我的类路径,并且在任何级别的应用程序中的任何地方都没有其他 Hibernate4 引用。
当我尝试执行我的 DaoTestCode 时,Spring 应用程序上下文不会加载,因为此错误消息:
java.lang.NoSuchMethodError: org.hibernate.internal.CoreMessageLogger.debug
我试图在网络上找到显示 Hibernate 5 与 Spring 4.2.2 的正确配置的其他地方,但我找不到任何东西。我知道我经历了从 Hibernate 3 到 Hibernate 4 的一些痛苦,现在我想相应地向上迁移。我知道会有一些痛点。
有什么方法可以解决这个问题,以及我应该注意的任何其他未来问题吗?
谢谢!
更新了我的 pom 文件以将我所有的日志记录罐更新到最新版本:
<!-- Logging Dependencies -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
<exclusions>
<exclusion>
<groupId>com.sun.jdmk</groupId>
<artifactId>jmxtools</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jmx</groupId>
<artifactId>jmxri</artifactId>
</exclusion>
<exclusion>
<groupId>javax.jms</groupId>
<artifactId>jms</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.12</version>
</dependency>
<dependency>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
<version>3.3.0.Final</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.12</version>
</dependency>
这解决了我的问题!
我认为这是一个类路径问题。
您检查过应用服务器的库了吗?
方法org.hibernate.internal.CoreMessageLogger.debug继承自org.jboss.logging.BasicLogger,自hibernate 4起添加。
你有 jboss-logging 在你的类路径中正确的版本吗?
也许你的类路径中有 hibernate 3 库?
所以,我有一个成功的 Spring 4.2.2.RELEASE MVC 网络应用程序与 Hibernate 4.3.8.Final 一起工作。我更改为 Hibernate 5.0。2.Final,并对我的 spring 应用程序上下文文件进行了以下更改。
发件人:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
收件人:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
来自:
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
收件人:
<bean id="transactionManager"
class="org.springframework.orm.hibernate5.HibernateTransactionManager">
我在网络上的其他任何地方都找不到这个问题。我确定我检查了我的类路径,并且在任何级别的应用程序中的任何地方都没有其他 Hibernate4 引用。
当我尝试执行我的 DaoTestCode 时,Spring 应用程序上下文不会加载,因为此错误消息:
java.lang.NoSuchMethodError: org.hibernate.internal.CoreMessageLogger.debug
我试图在网络上找到显示 Hibernate 5 与 Spring 4.2.2 的正确配置的其他地方,但我找不到任何东西。我知道我经历了从 Hibernate 3 到 Hibernate 4 的一些痛苦,现在我想相应地向上迁移。我知道会有一些痛点。 有什么方法可以解决这个问题,以及我应该注意的任何其他未来问题吗?
谢谢!
更新了我的 pom 文件以将我所有的日志记录罐更新到最新版本:
<!-- Logging Dependencies -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
<exclusions>
<exclusion>
<groupId>com.sun.jdmk</groupId>
<artifactId>jmxtools</artifactId>
</exclusion>
<exclusion>
<groupId>com.sun.jmx</groupId>
<artifactId>jmxri</artifactId>
</exclusion>
<exclusion>
<groupId>javax.jms</groupId>
<artifactId>jms</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.12</version>
</dependency>
<dependency>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
<version>3.3.0.Final</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.12</version>
</dependency>
这解决了我的问题!
我认为这是一个类路径问题。
您检查过应用服务器的库了吗?
方法org.hibernate.internal.CoreMessageLogger.debug继承自org.jboss.logging.BasicLogger,自hibernate 4起添加。 你有 jboss-logging 在你的类路径中正确的版本吗?
也许你的类路径中有 hibernate 3 库?