2012-01-11 120 views
0

我按照level up的教程進行操作。我在那裏輸入所有的東西。但一些如何得到例外。創建bean時會出現IncompatibleClassChangeError sessionFactory

我使用Tomcat 7和JRE 7

,這裏是我的web.xml

<?xml version="1.0" encoding="ISO-8859-1"?> 
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 

<context-param> 
    <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/hibernateDataAccessContext.xml /WEB-INF/applicationContext.xml 
    </param-value> 
</context-param> 

<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener 
</listener-class> 

<!-- Register a servlet that despatches requests to registered controllers --> 
<servlet> 
    <servlet-name>world</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<!-- Send all .html files to the Spring dispatcher servlet --> 
<servlet-mapping> 
    <servlet-name>world</servlet-name> 
     <url-pattern>*.html</url-pattern> 
    </servlet-mapping> 

    <!-- Define the web application entry point --> 
    <welcome-file-list> 
    <welcome-file>countryList.html</welcome-file> 
    </welcome-file-list> 
</web-app> 

hibernateDataAccessContext

<?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:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx" 
    xsi:schemaLocation=" 
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd 
     http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd 
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> 

    <!-- Auto-detect the DAOs --> 
    <context:component-scan base-package="levelup.world.dao.hibernate"/> 

    <context:property-placeholder location="WEB-INF/jdbc.properties"/> 

    <bean id="dataSource" 
     class="org.apache.commons.dbcp.BasicDataSource" 
     destroy-method="close" 
     p:driverClassName="${jdbc.driverClassName}" 
     p:url="${jdbc.url}" 
     p:username="${jdbc.username}" 
     p:password="${jdbc.password}" 
     p:maxActive="${dbcp.maxActive}" 
     p:maxIdle="${dbcp.maxIdle}" 
     p:maxWait="${dbcp.maxWait}" 
    /> 


    <bean id="sessionFactory" 
     class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean" 
     p:dataSource-ref="dataSource" 
     p:configurationClass="org.hibernate.cfg.AnnotationConfiguration" 
     p:packagesToScan="levelup.world.domain"> 
    <property name="hibernateProperties"> 
     <props> 
     <prop key="hibernate.dialect">${hibernate.dialect}</prop> 
     <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> 
     <prop key="hibernate.format_sql">${hibernate.format_sql}</prop> 
     <prop key="hibernate.generate_statistics">${hibernate.generate_statistics}</prop> 
     </props> 
    </property> 
    <property name="eventListeners"> 
     <map> 
     <entry key="merge"> 
      <bean class="org.springframework.orm.hibernate3.support.IdTransferringMergeEventListener"/> 
     </entry> 
     </map> 
    </property> 

    </bean> 

    <tx:annotation-driven transaction-manager="txnManager"/> 

    <bean id="txnManager" 
     class="org.springframework.orm.hibernate3.HibernateTransactionManager" 
     p:sessionFactory-ref="sessionFactory"/> 


    <bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/> 
</beans> 

,並即時得到例外:

 Jan 11, 2012 8:52:11 PM org.apache.catalina.core.StandardContext listenerStart 
SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor#0' defined in ServletContext resource [/WEB-INF/hibernateDataAccessContext.xml]: Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/hibernateDataAccessContext.xml]: Invocation of init method failed; nested exception is java.lang.IncompatibleClassChangeError: Implementing class 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:530) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:459) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) 
    at org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:728) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:449) 
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:381) 
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283) 
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4765) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5260) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1525) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1515) 
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/hibernateDataAccessContext.xml]: Invocation of init method failed; nested exception is java.lang.IncompatibleClassChangeError: Implementing class 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1445) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:522) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:459) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:400) 
    at org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors(BeanFactoryUtils.java:275) 
    at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.detectPersistenceExceptionTranslators(PersistenceExceptionTranslationInterceptor.java:139) 
    at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.<init>(PersistenceExceptionTranslationInterceptor.java:79) 
    at org.springframework.dao.annotation.PersistenceExceptionTranslationAdvisor.<init>(PersistenceExceptionTranslationAdvisor.java:70) 
    at org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor.setBeanFactory(PersistenceExceptionTranslationPostProcessor.java:103) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeAwareMethods(AbstractAutowireCapableBeanFactory.java:1465) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1433) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:522) 
    ... 20 more 
Caused by: java.lang.IncompatibleClassChangeError: Implementing class 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(Unknown Source) 
    at java.security.SecureClassLoader.defineClass(Unknown Source) 
    at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2823) 
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1160) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1655) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1533) 
    at java.lang.Class.getDeclaredConstructors0(Native Method) 
    at java.lang.Class.privateGetDeclaredConstructors(Unknown Source) 
    at java.lang.Class.getConstructor0(Unknown Source) 
    at java.lang.Class.getDeclaredConstructor(Unknown Source) 
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:104) 
    at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newConfiguration(LocalSessionFactoryBean.java:818) 
    at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:549) 
    at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1504) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1442) 
    ... 35 more 

任何形式的幫助表示讚賞。 編輯:

List of Jars : 

antlr-2.7.7.jar 
aopalliance-1.0.jar 
c3p0-0.9.1.2.jar 
cglib-nodep-2.2.jar 
classmate-0.5.4.jar 
commons-beanutils-1.8.3.jar 
commons-collections-3.2.1.jar 
commons-dbcp-1.4.jar 
commons-digester-2.1.jar 
commons-lang.jar 
commons-logging-1.1.1.jar 
commons-logging-api-1.1.jar 
commons-pool-1.5.7.jar 
dom4j-1.6.1.jar 
ehcache-1.1.jar 
hibernate-commons-annotations-4.0.1.Final.jar 
hibernate-core-4.0.0.Final.jar 
hibernate-jpa-2.0-api-1.0.1.Final.jar 
hibernate-validator-4.0.2.GA.jar 
jandex-1.0.3.Final.jar 
javassist-3.7.ga.jar 
jboss-logging-3.1.0.CR2.jar 
jboss-transaction-api_1.1_spec-1.0.0.Final.jar 
jstl-1.1.2.jar 
jta-1.1.jar 
junit-4.8.1.jar 
log4j-1.2.15.jar 
mysql-connector-java-5.1.5-bin.jar 
org.springframework.aop-3.1.0.RC1.jar 
org.springframework.asm-3.1.0.RC1.jar 
org.springframework.aspects-3.1.0.RC1.jar 
org.springframework.beans-3.1.0.RC1.jar 
org.springframework.context.support-3.1.0.RC1.jar 
org.springframework.context-3.1.0.RC1.jar 
org.springframework.core-3.1.0.RC1.jar 
org.springframework.expression-3.1.0.RC1.jar 
org.springframework.instrument.tomcat-3.1.0.RC1.jar 
org.springframework.instrument-3.1.0.RC1.jar 
org.springframework.jdbc-3.1.0.RC1.jar 
org.springframework.jms-3.1.0.RC1.jar 
org.springframework.orm-3.1.0.RC1.jar 
org.springframework.oxm-3.1.0.RC1.jar 
org.springframework.test-3.1.0.RC1.jar 
org.springframework.transaction-3.1.0.RC1.jar 
org.springframework.web.portlet-3.1.0.RC1.jar 
org.springframework.web.servlet-3.1.0.RC1.jar 
org.springframework.web.struts-3.1.0.RC1.jar 
org.springframework.web-3.1.0.RC1.jar 
slf4j-api-1.6.1.jar 
slf4j-log4j12-1.6.1.jar 
spring-modules-validation-0.8.jar 
standard-1.1.2.jar 
tiles-api-2.2.2.jar 
tiles-core-2.2.2.jar 
tiles-jsp-2.2.2.jar 
tiles-servlet-2.2.2.jar 
tiles-template-2.2.2.jar 
validation-api-1.0.0.GA.jar 
+0

見http://stackoverflow.com/questions/3534854/what-is-a-incompatibleclasschangeerror -exception式的Java。它必須是類路徑的問題。 – 2012-01-11 15:46:57

+0

classpath,怎麼樣?請不要介意,我沒有明白.. – rokonoid 2012-01-11 16:33:31

+0

您的類路徑中可能存在衝突版本的庫(jar文件)。 – 2012-01-11 16:42:06

回答

1

你有不兼容的hibernate jars版本。 而且你正在使用hibernate 3來創建會話工廠,而你所有的hibernate jars都是hibernate 4 jar。

我會建議你休眠罐子的列表,應該在你的情況下工作得非常好:

hibernate-annotations.jar 
hibernate-c3p0-3.3.1.GA.jar 
hibernate-cglib-repack-2.1_3.jar 
hibernate-commons-annotations.jar 
hibernate-core.jar 
+0

謝謝@Anvay ..我認爲這會有很大幫助。 – rokonoid 2013-01-30 05:34:50

相關問題