2012-04-21 127 views
3

我試圖將spring 3.1.1與hibernate 4.0集成。這是我的調度員servlet.xml中:java.lang.NoClassDefFoundError:org/springframework/transaction/interceptor/TransactionInterceptor

<?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:aop="http://www.springframework.org/schema/aop" 
xmlns:context="http://www.springframework.org/schema/context" 
xmlns:jee="http://www.springframework.org/schema/jee" 
xmlns:lang="http://www.springframework.org/schema/lang" 
xmlns:p="http://www.springframework.org/schema/p" 
xmlns:tx="http://www.springframework.org/schema/tx" 
xmlns:util="http://www.springframework.org/schema/util" 
xmlns:mvc="http://www.springframework.org/schema/mvc" 
xsi:schemaLocation="http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd 
    http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd 
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd 
    http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd 
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd 
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd 
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 
<context:component-scan base-package="com.future.controllers" /> 
<context:annotation-config /> 
<context:component-scan base-package="com.future.services.menu" /> 
<context:component-scan base-package="com.future.dao" /> 

    <bean id="dataSource" 
    class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" 
    p:driverClassName="com.mysql.jdbc.Driver" 
    p:url="jdbc:mysql://localhost:3306/bar_visitor2" p:username="root" 
    p:password=""/> 
<bean id="viewResolver" 
    class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="viewClass" 
     value="org.springframework.web.servlet.view.JstlView" /> 
    <property name="prefix" value="/WEB-INF/views/" /> 
    <property name="suffix" value=".jsp" /> 
</bean> 
<bean id="sessionFactory" 
    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="configLocation"> 
     <value>classpath:hibernate.cfg.xml</value> 
    </property> 


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

當我嘗試使用@Transactional註釋,我得到一個錯誤java.lang.NoClassDefFoundError: org/springframework/transaction/interceptor/TransactionInterceptor

我檢查了我的班級路徑,並且有TransactionInterceptor.class。我究竟做錯了什麼?我應該添加什麼?

編輯 這是我的lib文件夾:僅

enter image description here

+0

你在CLASSPATH上還有'spring-aop * .jar'和'spring-beans * .jar'嗎?我在回答中強調了 – 2012-04-22 08:33:46

+0

--你必須檢查你的_runtime_ classpath。你向我們展示的是你的編譯時類路徑。 – Bozho 2012-04-23 21:29:01

+0

我通過下載不同的罐子來解決這個問題。 – user1137146 2012-04-23 21:44:39

回答

1

你需要檢查你的運行類路徑(即WEB-INF/lib目錄)爲spring-tx-...jar(並確保你有一個這樣的罐子,用不同的版本不多)

+0

我之前檢查過,不是這樣。 – user1137146 2012-04-21 20:59:40

+0

這些異常意味着或者您擁有多個包含攔截器的jar,這會讓類加載器混淆 – Bozho 2012-04-21 21:37:54