package com.sj.persistence.dao
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [com/sj/applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: org/hibernate/MappingException
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1403)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:290)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:287)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:189)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:545)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:871)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:423)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
at persistence.dao.CustomerDaoTest.setUpBeforeClass(CustomerDaoTest.java:20)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
at org.junit.runners.ParentRunner.run(ParentRunner.java:220)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.lang.NoClassDefFoundError: org/hibernate/MappingException
at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:124)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:83)
at org.springframework.orm.jpa.LocalEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalEntityManagerFactoryBean.java:92)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:308)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1460)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1400)
... 28 more
Caused by: java.lang.ClassNotFoundException: org.hibernate.MappingException
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
... 34 more谁能帮看看啊!这个异常是怎么回事
哪里出事了?

解决方案 »

  1.   

    CustomerDaoTest  把这个文件贴出来吧   不然不懂    java.lang.ClassNotFoundException: org.hibernate.MappingException
    不过从这个看的话 估计是映射文件没配置正确
      

  2.   

    package persistence.dao;import java.util.List;import org.junit.BeforeClass;
    import org.junit.Test;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;import com.sj.persistence.dao.CustomerDao;
    import com.sj.persistence.po.Customer;public class CustomerDaoTest {
    private static CustomerDao customerDao ;

    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
    try {
    System.out.println(CustomerDao.class.getPackage());
    ApplicationContext cxt = new ClassPathXmlApplicationContext("com/sj/applicationContext.xml");
    customerDao = (CustomerDao) cxt.getBean("customerDao");
    } catch (Exception e) {
    e.printStackTrace();
    }
    } @Test
    public void testSave() {
    System.out.println(customerDao);
    Customer c = new Customer("DDD" , "admin" , "[email protected]" , 100 , 123.321 );
    c.setComment("记录备注");
    customerDao.save(c);
    } @Test
    public void testUpdate() {
    System.out.println(customerDao);
    Customer c = new Customer("管理员" , "admin" , "[email protected]" , 100 , 111.21 );
    c.setComment("记录备注更新A");
    customerDao.update(c);
    } @Test
    public void testQueryCustomerByKey() {
    Customer c = (Customer) customerDao.queryCustomerByKey("管理员");
    System.out.println(c.getUsername() + "\t" + c.getPassword()
    + "\t" + c.getEmail() + "\t" + c.getScore()
    + "\t" + c.getSalesTotal() + "\t" + c.getComment());

    } @Test
    public void testQueryCustomerByProperty() {
    List<Customer> list = (List<Customer>) customerDao.queryCustomerByProperty( Customer.COMMENT, "记录备注");
    System.out.println("list=" + list);
    for(Customer c : list){
    System.out.println(c.getUsername() + "\t" + c.getPassword()
    + "\t" + c.getEmail() + "\t" + c.getScore() 
    + "\t" + c.getSalesTotal() + "\t" + c.getComment());
    }
    } @Test
    public void testQueryCustomerAll() {
    List<Customer> list = (List<Customer>) customerDao.queryCustomerAll();
    for(Customer c : list){
    System.out.println(c.getUsername() + "\t" + c.getPassword()
    + "\t" + c.getEmail() + "\t" + c.getScore() 
    + "\t" + c.getSalesTotal() + "\t" + c.getComment());
    }
    } @Test
    public void testDelete() {
    // System.out.println(customerDao);
    customerDao.delete("DDD");
    }}
      

  3.   

    还想问一下,是不是myeclipse8.5引入的包经常会出现引入错误,或者丢失的问题?
      

  4.   

    ApplicationContext cxt = new ClassPathXmlApplicationContext("com/sj/applicationContext.xml");
                customerDao = (CustomerDao) cxt.getBean("customerDao");
      楼主是用注解还是配置文件?
      用配置文件的话  看看在com/sj/applicationContext.xml中是否存在customerDao  bean及
                         <property name="mappingResources">
    <list>
    <value>你要配置的实体  在你的项目应该是Customer的实体的绝对路径</value>
                            </list>
                       </property>
      

  5.   

    org.hibernate.MappingException
    没有发现这个类
    我怀疑是你spring配置文件里配置这个类 匹配错了
      

  6.   

    找到问题了。myeclipse的包没有引入。不知道怎么回事,有时候打开myeclipse的时候,项目中就会丢失一些包!重新导一下就好了。
    我用的是myeclipse 8.5