2016-10-27 36 views
0

我使用maven-archetype創建了一個使用Spring和Hibernate的項目,當使用JUnit運行此項目時出現此錯誤。使用Maven Spring和Hibernate的Java的問題

java.lang.IllegalStateException: Failed to load ApplicationContext 
     at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:124) 
     at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:83) 
     at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:117) 
     at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:83) 
     at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:230) 
     at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:228) 
     at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:287) 
     at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 
     at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:289) 
     at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:247) 
     at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:94) 
     at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) 
     at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) 
     at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) 
     at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) 
     at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) 
     at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) 
     at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) 
     at org.junit.runners.ParentRunner.run(ParentRunner.java:363) 
     at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191) 
     at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) 
     at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) 
     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678) 
     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) 
     at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192) 
    Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [spring_config.xml]: Invocation of init method failed; nested exception is org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1578) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) 
     at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) 
     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) 
     at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:757) 
     at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:861) 
     at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541) 
     at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:128) 
     at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:60) 
     at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.delegateLoading(AbstractDelegatingSmartContextLoader.java:108) 
     at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.loadContext(AbstractDelegatingSmartContextLoader.java:251) 
     at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:98) 
     at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:116) 
     ... 25 more 
    Caused by: org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister 
     at org.hibernate.persister.internal.PersisterFactoryImpl.create(PersisterFactoryImpl.java:185) 
     at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:135) 
     at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:389) 
     at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1799) 
     at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1870) 
     at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.java:372) 
     at org.springframework.orm.hibernate4.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:454) 
     at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:439) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574) 
     ... 40 more 
    Caused by: org.hibernate.HibernateException: Unable to instantiate default tuplizer [org.hibernate.tuple.entity.PojoEntityTuplizer] 
     at org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:138) 
     at org.hibernate.tuple.entity.EntityTuplizerFactory.constructDefaultTuplizer(EntityTuplizerFactory.java:188) 
     at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:341) 
     at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:506) 
     at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:146) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
     at java.lang.reflect.Constructor.newInstance(Unknown Source) 
     at org.hibernate.persister.internal.PersisterFactoryImpl.create(PersisterFactoryImpl.java:163) 
     ... 49 more 
    Caused by: java.lang.reflect.InvocationTargetException 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
     at java.lang.reflect.Constructor.newInstance(Unknown Source) 
     at org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:135) 
     ... 58 more 
    Caused by: java.lang.NoClassDefFoundError: javassist/util/proxy/MethodFilter 
     at org.hibernate.bytecode.internal.javassist.BytecodeProviderImpl.getProxyFactoryFactory(BytecodeProviderImpl.java:56) 
     at org.hibernate.tuple.entity.PojoEntityTuplizer.buildProxyFactoryInternal(PojoEntityTuplizer.java:249) 
     at org.hibernate.tuple.entity.PojoEntityTuplizer.buildProxyFactory(PojoEntityTuplizer.java:227) 
     at org.hibernate.tuple.entity.AbstractEntityTuplizer.<init>(AbstractEntityTuplizer.java:212) 
     at org.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:82) 
     ... 63 more 
    Caused by: java.lang.ClassNotFoundException: javassist.util.proxy.MethodFilter 
     at java.net.URLClassLoader.findClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
     ... 68 more 

的pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.helpet</groupId> 
    <artifactId>helpet</artifactId> 
    <packaging>war</packaging> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>helpet Maven Webapp</name> 
    <url>http://maven.apache.org</url> 

    <dependencies> 
    <!-- JUnit pruebas --> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.12</version> 
     <scope>test</scope> 
    </dependency> 

    <!-- Sevlets --> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>3.1.0</version> 
    </dependency> 

    <!-- Conector a base de datos MySQL --> 
    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>5.1.22</version> 
    </dependency> 

    <!-- Manejo de errores "Log" --> 
    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.17</version> 
    </dependency> 

    <!-- Hibernate -->  
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>4.2.21.Final</version> 
    </dependency> 

    <!-- Spring --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
     <version>4.3.2.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>4.3.2.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-tx</artifactId> 
     <version>4.3.2.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-orm</artifactId> 
     <version>4.3.2.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-test</artifactId> 
     <version>4.3.2.RELEASE</version> 
    </dependency> 
    </dependencies> 
    <build> 
    <finalName>helpet</finalName> 
    </build> 
</project> 

Spring配置文件

<!-- Obtiene el recurso con la información de la base de datos --> 
    <context:property-placeholder location="classpath:configuration/properties/connection.properties" /> 

    <!-- Creación del datasource --> 
    <bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
     <!-- Nombre de la clase del driver --> 
     <property name="driverClassName" value="com.mysql.jdbc.Driver"></property> 
     <!-- url de la database --> 
     <property name="url" value="${connection.url}"></property> 
     <!-- credenciales de sesion --> 
     <property name="username" value="${connection.username}"></property> 
     <property name="password" value="${connection.password}"></property> 
    </bean> 

    <!-- Creamos el session Factory --> 
    <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">  
     <property name="dataSource" ref="datasource"></property> 
     <property name="mappingLocations" >  
     <list> 
     <value>com/helpet/iw/mapping/Country.hbm.xml</value> 
     </list> 
     </property> 
     <property name="hibernateProperties"> 
      <props> 
       <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> 
       <prop key="hibernate.show_sql">true</prop> 
       <prop key="javax.persistence.validation.mode">none</prop> 
      </props> 
     </property> 
    </bean> 

    <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> 
     <property name="sessionFactory" ref="sessionFactory"></property> 
     <property name="dataSource" ref="datasource"></property> 
    </bean> 

    <bean id="BreedDao" class="com.helpet.iw.dao.hibernate.BreedDaoHibernate"> 
     <property name="sessionFactory" ref="sessionFactory"></property> 
    </bean> 

    <bean id="CityDao" class="com.helpet.iw.dao.hibernate.CityDaoHibernate"> 
     <property name="sessionFactory" ref="sessionFactory"></property> 
    </bean> 

    <bean id="CountryDao" class="com.helpet.iw.dao.hibernate.CountryDaoHibernate"> 
     <property name="sessionFactory" ref="sessionFactory"></property> 
    </bean> 

    <bean id="LocationDao" class="com.helpet.iw.dao.hibernate.LocationDaoHibernate"> 
     <property name="sessionFactory" ref="sessionFactory"></property> 
    </bean> 

    <bean id="PetDao" class="com.helpet.iw.dao.hibernate.PetDaoHibernate"> 
     <property name="sessionFactory" ref="sessionFactory"></property> 
    </bean> 

    <bean id="UserDao" class="com.helpet.iw.dao.hibernate.UserDaoHibernate"> 
     <property name="sessionFactory" ref="sessionFactory"></property> 
    </bean> 

    <bean id="BreedB1" class="com.helpet.logic.implement.BreedB1Imp"> 
     <constructor-arg name="countryDao" ref="CountryDao"></constructor-arg>  
    </bean> 

    <bean id="CityB1" class="com.helpet.logic.implement.CityB1Impl"> 
     <constructor-arg name="cityDao" ref="CityDao"></constructor-arg>  
     <constructor-arg name="countryDao" ref="CountryDao"></constructor-arg>  
    </bean> 

    <bean id="CountryB1" class="com.helpet.logic.implement.CountryB1Imp"> 
     <constructor-arg name="countryDao" ref="CountryDao"></constructor-arg>  
    </bean> 

    <bean id="LocationB1" class="com.helpet.logic.implement.LocationB1Impl"> 
     <constructor-arg name="userDao" ref="UserDao"></constructor-arg>  
     <constructor-arg name="petDao" ref="PetDao"></constructor-arg> 
     <constructor-arg name="locationDao" ref="LocationDao"></constructor-arg>   
    </bean> 

    <bean id="PetB1" class="com.helpet.logic.implement.PetB1Impl"> 
     <constructor-arg name="petDao" ref="PetDao"></constructor-arg> 
     <constructor-arg name="userDao" ref="UserDao"></constructor-arg> 
     <constructor-arg name="breedDao" ref="BreedDao"></constructor-arg>  
    </bean> 

    <bean id="UserB1" class="com.helpet.logic.implement.UserB1Impl"> 
     <constructor-arg name="cityDao" ref="CityDao"></constructor-arg> 
     <constructor-arg name="countryDao" ref="CountryDao"></constructor-arg>   
    </bean> 

    <bean id="CountryTest" class="com.helpet.logic.test.CountryTest"> 
     <property name="sessionFactory" ref="sessionFactory"></property> 
    </bean> 
</beans> 

所有的代碼是:https://github.com/carloskike/helpet

+0

好像缺少相關的問題,已經張貼在這裏我的鏈接http://stackoverflow.com/問題/ 35728400/error-java-lang-nosuchmethoderror-org-springframework -asm -classvisitor-init/35746359#35746359 –

+0

這是一個新項目嗎?你可以使用Spring Boot代替它,它幾乎可以處理你爲你發佈的所有內容? – chrylis

回答

0

從異常TRAC Ë

拋出java.lang.ClassNotFoundException:javassist.util.proxy.MethodFilter

javassist.util.proxy.MethodFilter沒有找到。下載缺少的罐子,在pom.xml文件的依賴關係部分中添加以下依賴項

<dependency> 
    <groupId>javassist</groupId> 
    <artifactId>javassist</artifactId> 
    <version>3.12.1.GA</version> 
</dependency> 

參考:https://www.mkyong.com/hibernate/java-lang-classnotfoundexception-javassist-util-proxy-methodfilter/

+0

Thaks男人。這對我有用 –

相關問題