gpt4 book ai didi

java - Spring 3 + Hibernate 4 + C3P0 : java. lang.NoSuchMethodError : org. springframework.orm.hibernate4.LocalSessionFactoryBuilder.addAnnotatedClass

转载 作者:行者123 更新时间:2023-11-30 03:30:51 28 4
gpt4 key购买 nike

我的 Web 应用程序运行良好,现在我想将 C3P0 添加到我的 Web 应用程序中来管理连接池。一切看起来都不错,但我收到以下错误,导致出现一堆异常:

java.lang.NoSuchMethodError: org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.addAnnotatedClass(Ljava/lang/Class;)Lorg/hibernate/cfg/Configuration;
at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.addAnnotatedClasses(LocalSessionFactoryBuilder.java:165)
at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:341)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1541)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1479)
... 86 more

这是我的配置文件:

spring-config.xml

    <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:component-scan base-package="com.mycompany.myproject.business" />
<context:annotation-config />

<!-- Beans Declaration -->
<bean id="InfantInfo" class="com.mycompany.myproject.dataaccess.model.InfantInfo"/>
<bean id="User" class="com.mycompany.myproject.dataaccess.model.User"/>

<!-- Service Declaration -->
<bean id="InfantInfoBoImpl" class="com.mycompany.myproject.business.bo.impl.InfantInfoBoImpl">
<property name="infantInfoDao" ref="InfantInfoDaoImpl" />
</bean>
<bean id="UserBoImpl" class="com.mycompany.myproject.business.bo.impl.UserBoImpl">
<property name="userDao" ref="UserDaoImpl" />
</bean>

<!-- DAO Declaration -->
<bean id="InfantInfoDaoImpl" class="com.mycompany.myproject.dataaccess.dao.impl.InfantInfoDaoImpl">
<property name="sessionFactory" ref="SessionFactory" />
</bean>
<bean id="UserDaoImpl" class="com.mycompany.myproject.dataaccess.dao.impl.UserDaoImpl">
<property name="sessionFactory" ref="SessionFactory" />
</bean>
</beans>

hibernate-config.xml

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.1.xsd">

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>/WEB-INF/database.properties</value>
</list>
</property>
</bean>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driver}" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="user" value="${jdbc.user}" />
<property name="password" value="${jdbc.password}" />
<!-- these are C3P0 properties -->
<property name="initialPoolSize" value="${initialPoolSize}"/>
<property name="acquireIncrement" value="${acquireIncrement}" />
<property name="minPoolSize" value="${minPoolSize}" />
<property name="maxPoolSize" value="${maxPoolSize}" />
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="annotatedClasses">
<list>
<value>com.mycompany.myproject.dataaccess.model.InfantInfo</value>
<value>com.mycompany.myproject.dataaccess.model.User</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>

数据库.属性

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mydb?useUnicode=true&amp;characterEncoding=utf-8
jdbc.user=user
jdbc.password=password

initialPoolSize=10
acquireIncrement=10
minPoolSize=10
maxPoolSize=50

pom.xml

<properties>
<mysql.version>5.1.25</mysql.version>
<log4j.version>1.2.17</log4j.version>
<jpa.version>2.0.Beta-20090815</jpa.version>
<spring.version>3.2.3.RELEASE</spring.version>
<commons-dbcp.version>1.4</commons-dbcp.version>
<hibernate.version>4.2.2.Final</hibernate.version>
<commons-codec.version>1.9</commons-codec.version>
<hibernate-c3p0.version>3.6.3.Final</hibernate-c3p0.version>
<endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<hibernate-commons-annotations.version>3.3.0.ga</hibernate-commons-annotations.version>
</properties>

<dependencies>
<dependency>
<groupId>org.glassfish.metro</groupId>
<artifactId>webservices-rt</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>${commons-dbcp.version}</version>
</dependency>
<!--Spring MVC-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<!--Hibernate-->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate.java-persistence</groupId>
<artifactId>jpa-api</artifactId>
<version>${jpa.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
<version>${hibernate-c3p0.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-commons-annotations</artifactId>
<version>${hibernate-commons-annotations.version}</version>
</dependency>
<!--MySQL-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<!--APACHE COMMONS CODEC-->
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>${commons-codec.version}</version>
</dependency>
<!--LOG4J-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
</dependencies>

有点令人困惑......我不知道是什么原因......

感谢您的评论。

编辑:

Maven 依赖树:

    com.mycompany:myproject:war:1.0-SNAPSHOT
+- org.glassfish.metro:webservices-rt:jar:2.3:compile
| \- org.glassfish.metro:webservices-api:jar:2.3:compile
| \- javax.annotation:javax.annotation-api:jar:1.2-b03:runtime
+- javax:javaee-web-api:jar:7.0:provided
+- org.springframework:spring-core:jar:3.2.3.RELEASE:compile
| \- commons-logging:commons-logging:jar:1.1.1:compile
+- org.springframework:spring-context:jar:3.2.3.RELEASE:compile
| +- org.springframework:spring-aop:jar:3.2.3.RELEASE:compile
| \- org.springframework:spring-beans:jar:3.2.3.RELEASE:compile
+- org.springframework:spring-jdbc:jar:3.2.3.RELEASE:compile
+- org.springframework:spring-orm:jar:3.2.3.RELEASE:compile
| \- aopalliance:aopalliance:jar:1.0:compile
+- org.springframework:spring-tx:jar:3.2.3.RELEASE:compile
+- org.springframework:spring-expression:jar:3.2.3.RELEASE:compile
+- commons-dbcp:commons-dbcp:jar:1.4:compile
| \- commons-pool:commons-pool:jar:1.5.4:compile
+- org.springframework:spring-web:jar:3.2.3.RELEASE:compile
+- org.springframework:spring-webmvc:jar:3.2.3.RELEASE:compile
+- org.hibernate:hibernate-core:jar:4.2.2.Final:compile
| +- antlr:antlr:jar:2.7.7:compile
| +- org.jboss.logging:jboss-logging:jar:3.1.0.GA:compile
| +- dom4j:dom4j:jar:1.6.1:compile
| +- org.jboss.spec.javax.transaction:jboss-transaction-api_1.1_spec:jar:1.0.1.Final:compile
| +- org.hibernate.javax.persistence:hibernate-jpa-2.0-api:jar:1.0.1.Final:compile
| +- org.hibernate.common:hibernate-commons-annotations:jar:4.0.2.Final:compile
| \- org.javassist:javassist:jar:3.15.0-GA:compile
+- org.hibernate.java-persistence:jpa-api:jar:2.0.Beta-20090815:compile
+- org.hibernate:hibernate-c3p0:jar:3.6.3.Final:compile
| \- org.slf4j:slf4j-api:jar:1.6.1:compile
+- org.hibernate:hibernate-commons-annotations:jar:3.3.0.ga:compile
| +- org.hibernate:hibernate:jar:3.2.1.ga:compile
| | +- net.sf.ehcache:ehcache:jar:1.2.3:compile
| | +- javax.transaction:jta:jar:1.1:compile
| | +- asm:asm-attrs:jar:1.5.3:compile
| | +- cglib:cglib:jar:2.1_3:compile
| | +- asm:asm:jar:1.5.3:compile
| | \- commons-collections:commons-collections:jar:2.1.1:compile
| \- javax.persistence:persistence-api:jar:1.0:compile
+- c3p0:c3p0:jar:0.9.1.2:compile
+- mysql:mysql-connector-java:jar:5.1.25:compile
+- commons-codec:commons-codec:jar:1.9:compile
\- log4j:log4j:jar:1.2.17:compile

最佳答案

您正在混合 Hibernate 依赖项:

  1. spring-orm 带有 hibernate 版本(例如 3.3.2.GA)
  2. hibernate-core 是 4.2.2.Final
  3. hibernate-c3p0 为 3.6.3.Final
  4. JPA版本是2.0,只有supported by Hibernate 3.5+

运行 mvn:dependency:tree 并确保使用单个 Spring 版本(例如 3.2.3.RELEASE)和单个 Hibernate 版本(例如 3.6.3.Final)。

关于java - Spring 3 + Hibernate 4 + C3P0 : java. lang.NoSuchMethodError : org. springframework.orm.hibernate4.LocalSessionFactoryBuilder.addAnnotatedClass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29092118/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com