【问题标题】:Spring 4 and Hibernate 5 gives NoSuchMethodError org.hibernate.internal.CoreMessageLoggerSpring 4 和 Hibernate 5 给出 NoSuchMethodError org.hibernate.internal.CoreMessageLogger
【发布时间】:2016-01-29 21:41:09
【问题描述】:

所以,我有一个成功的 Spring 4.2.2.RELEASE MVC web 应用程序与 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

我试图在网上找到其他地方,它显示了带有 Spring 4.2.2 的 Hibernate 5 的正确配置,但我找不到任何东西。我知道我从 Hibernate 3 到 Hibernate 4 经历了一些痛苦,现在我想相应地向上迁移。我知道会有一些痛点。 有什么方法可以解决这个问题,以及我应该注意的任何其他未来问题吗?

谢谢!

【问题讨论】:

    标签: spring-mvc hibernate-4.x hibernate-5.x


    【解决方案1】:

    更新了我的 pom 文件以将我所有的日志记录 jar 更新到最新:

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

    这解决了我的问题!

    【讨论】:

    • 为我工作!非常感谢
    • 这对我有用,并且在从 4.3 迁移到 5.2.13 时让我的项目恢复运行
    【解决方案2】:

    我认为这是一个类路径问题。

    您是否签入了应用服务器的库?

    方法 org.hibernate.internal.CoreMessageLogger.debug 继承自 org.jboss.logging.BasicLogger 并从 hibernate 4 开始添加。 你的类路径中有正确版本的 jboss-logging 吗?

    也许你的类路径中有 hibernate 3 lib?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-26
      • 2016-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-26
      • 2021-12-26
      相关资源
      最近更新 更多