【问题标题】:TransactionManager Spring 4 hibernate 4 NoSuchMethodErrorTransactionManager Spring 4 休眠 4 NoSuchMethodError
【发布时间】:2014-10-26 07:52:56
【问题描述】:

我正在尝试在 spring 中使用基于注释的事务管理,这是我的 spring 配置:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
        xmlns="http://www.springframework.org/schema/beans" 
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:p="http://www.springframework.org/schema/p"
        xmlns:aop="http://www.springframework.org/schema/aop"
        xmlns:tx="http://www.springframework.org/schema/tx"



        xsi:schemaLocation="
            http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/tx
            http://www.springframework.org/schema/tx/spring-tx.xsd
            http://www.springframework.org/schema/aop
            http://www.springframework.org/schema/aop/spring-aop.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context.xsd
            ">


    <bean id="dataSource" 
            class="org.apache.commons.dbcp.BasicDataSource" 
            depends-on="propertyPlaceholderConfigurer"
            p:driverClassName="org.postgresql.Driver"
            p:url="${db.url}" 
            p:username="${db.username}" 
            p:password="${db.password}" />


    <context:spring-configured />

    <bean id="sessionFactory" 
            class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" 
            depends-on="flywayAutomaticMigrationBean">
        <property name="dataSource" ref="dataSource" />
        <property name="packagesToScan" value="com.example" />
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
                <prop key="hibernate.show_sql">false</prop>
                <prop key="hibernate.default_schema">restProj</prop>
            </props>
        </property>

        <property name="mappingResources">
            <list>
                <value>com/example/db/hbm/user/User.hbm.xml</value>
                <value>com/example/db/hbm/user/Role.hbm.xml</value>
                <value>com/example/db/hbm/user/Feature.hbm.xml</value>

            </list>
        </property>
    </bean>

    <tx:annotation-driven transaction-manager="transactionManager" />
    <bean id="transactionManager"
        class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean> 

</beans>

当我运行我的项目时,我得到了这个错误:

Caused by: java.lang.NoSuchMethodError: org.springframework.aop.config.AopNamespaceUtils.registerAutoProxyCreatorIfNecessary(Lorg/springframework/beans/factory/xml/ParserContext;Ljava/lang/Object;)V
at org.springframework.transaction.config.AnnotationDrivenBeanDefinitionParser.parseInternal(AnnotationDrivenBeanDefinitionParser.java:54)
at org.springframework.beans.factory.xml.AbstractBeanDefinitionParser.parse(AbstractBeanDefinitionParser.java:60)
at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:74)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1424)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1414)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:187)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:141)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:110)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:508)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:391)
... 28 more

我读了这个answer,但我不想降级我的春季版本。

感谢您的帮助。

____更新____ 这是我的罐子清单:

    antlr-2.7.7.jar
aopalliance-repackaged-2.2.0.jar
asm-all-repackaged-2.2.0.jar
aspectjtools-1.7.4.jar
c3p0-0.9.1.2.jar
cas-client-core-3.2.1.jar
cas-client-integration-tomcat-common-3.2.1.jar
cas-client-integration-tomcat-v6-3.2.1.jar
cas-client-support-distributed-ehcache-3.2.1.jar
cas-client-support-distributed-memcached-3.2.1.jar
cglib-2.1.88.jar
commons-codec-1.6.jar
commons-collections.jar
commons-collections4-4.0.jar
commons-dbcp-1.4.jar
commons-exec-1.1.jar
commons-fileupload.jar
commons-io.jar
commons-lang-2.5.jar
commons-logging-1.1.3.jar
commons-pool-1.5.4.jar
dbunit-2.4.9.jar
dom4j-1.6.jar
ehcache-core-2.2.0.jar
flyway-core-3.0.jar
hamcrest-core-1.3.jar
hibernate-commons-annotations-4.0.4.Final.jar
hibernate-core-4.3.5.Final.jar
hibernate-entitymanager-4.3.5.Final.jar
hibernate-jpa-2.1-api-1.0.0.Final.jar
HibernatePagedList-2.0.jar
hk2-api-2.2.0.jar
hk2-locator-2.2.0.jar
hk2-utils-2.2.0.jar
jackson-annotations-2.2.3.jar
jackson-core-2.2.3.jar
jackson-databind-2.2.3.jar
jackson-jaxrs-base-2.2.3.jar
jackson-jaxrs-json-provider-2.2.3.jar
jandex-1.1.0.Final.jar
javassist-3.18.1-GA.jar
javax.annotation-api-1.2.jar
javax.inject-2.2.0.jar
javax.servlet-api-3.0.1.jar
javax.ws.rs-api-2.0.jar
jaxb-api-2.2.7.jar
jboss-logging-3.1.3.GA.jar
jboss-logging-annotations-1.2.0.Beta1.jar
jboss-transaction-api_1.2_spec-1.0.0.Final.jar
jersey-client.jar
jersey-common.jar
jersey-container-servlet-core.jar
jersey-container-servlet.jar
jersey-guava-2.6.jar
jersey-server.jar
jersey-spring3-2.6.jar
jta-1.0.1B.jar
juli-6.0.29.jar
junit-4.11.jar
log4j-1.2.15.jar
odmg-3.0.jar
org.osgi.core-4.2.0.jar
osgi-resource-locator-1.0.1.jar
PagedListApi-2.0.jar
persistence-api-1.0.jar
postgresql-8.4-703.jdbc4.jar
slf4j-api-1.6.1.jar
slf4j-log4j12-1.6.1.jar
spring-aop-4.0.2.RELEASE.jar
spring-aspects-4.0.2.RELEASE.jar
spring-beans-4.0.2.RELEASE.jar
spring-bridge-2.2.0-b14.jar
spring-context-4.0.2.RELEASE.jar
spring-context-support-4.0.2.RELEASE.jar
spring-core-4.0.2.RELEASE.jar
spring-dao-2.0.8.jar
spring-expression-4.0.2.RELEASE.jar
spring-instrument-4.0.2.RELEASE.jar
spring-instrument-tomcat-4.0.2.RELEASE.jar
spring-jdbc-4.0.2.RELEASE.jar
spring-orm-4.0.2.RELEASE.jar
spring-security-acl-3.2.1.RELEASE.jar
spring-security-cas-3.2.1.RELEASE.jar
spring-security-config-3.2.1.RELEASE.jar
spring-security-core-3.2.1.RELEASE.jar
spring-security-ldap-3.2.1.RELEASE.jar
spring-security-openid-3.2.1.RELEASE.jar
spring-security-taglibs-3.2.1.RELEASE.jar
spring-security-web-3.2.1.RELEASE.jar
spring-tx-4.0.2.RELEASE.jar
spring-web-4.0.2.RELEASE.jar
validation-api-1.1.0.Final.jar
xml-apis-1.4.01.jar
xmlsec-1.3.0.jar

【问题讨论】:

  • 看起来你在 complie 和 rungtime 中有不同版本的 spring-aop jar。你能检查一下吗?
  • 我如何检查这个?我总是在测试之前清理我的项目并重新构建它。
  • 你是在 Eclipse 中运行它还是在网络服务器中运行它?你能展示用过的罐子吗?
  • 检查你的 jar @littleali 如果源代码在你的 IDE 中可用,你可以检查该方法是否真的存在
  • @littleali 你能用你正在使用的 Spring 依赖项更新问题吗?

标签: spring hibernate spring-transactions


【解决方案1】:

您需要使用相同版本的 Spring 框架。 您在 Spring 4 版本中拥有大部分依赖项,但您也拥有

spring-dao-2.0.8.jar 和 spring-bridge-2.2.0-b14.jar。

删除这些依赖项,它应该可以工作

【讨论】:

  • spring-dao的最新版本是2.0.8。
  • @littleali 完全删除它!
  • 感谢错误消失了,但我的@transactional 方法不会更改数据库。
  • @littleali 很高兴听到它的工作!您可能应该尝试进一步调试事务性问题,如果无法解决,请开始一个新的 SO 问题
【解决方案2】:

如果你在 webserver 中运行,请检查 lib 中的 jars。检查这个例子它可以帮助你 http://www.codejava.net/frameworks/spring/spring-4-and-hibernate-4-integration-tutorial-part-1-xml-configuration

【讨论】:

  • 我以前读过。我使用 maven 来获取 jars,但它不起作用。
猜你喜欢
  • 2012-01-23
  • 1970-01-01
  • 2016-11-06
  • 1970-01-01
  • 2018-09-06
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 2017-08-03
相关资源
最近更新 更多