org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is java.io.FileNotFoundException: class path resource [classpath:/com/bean/*.hbm.xml] cannot be opened because it does not exist
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1338)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:423)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4172)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4671)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:701)
at org.apache.catalina.startup.Catalina.start(Catalina.java:585)
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.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: java.io.FileNotFoundException: class path resource [classpath:/com/bean/*.hbm.xml] cannot be opened because it does not exist
at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:143)
at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:631)
at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1369)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335)
... 30 more
但是我这个文件缺失存在的
目录src/com/bean/User.hbm.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping>
 <class name="com.bean.User" table="users">
  <id name="id" type="java.lang.Integer" column="id">
   <generator class="increment"/>
  </id>
  <property name="firstname" type="string" column="firstname"/>
  <property name="lastname" type="string" column="lastname"/>
  <property name="age" type="java.lang.Integer" column="age"/>
 </class>
</hibernate-mapping>
applicationContext文件内容为
<?xml version="1.0" encoding="UTF-8"?>
<beans
 xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
 <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
 <property name="url" value="jdbc:mysql://localhost:3306/test"></property>
 <property name="username" value="root"></property>
 <property name="password" value="test"></property>
 <property name="maxActive" value="100"></property>
 <property name="maxIdle"  value="30"></property>
 <property name="maxWait" value="500"></property>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
 <property name="dataSource" ref="dataSource"></property>
 <property name="hibernateProperties">
  <props>
   <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
   <prop key="hibernate.show_sql">true</prop>
  </props>
 </property>
 <property name="mappingResources">
  <list>
   <value>classpath:/com/bean/*.hbm.xml</value>
  </list>
 </property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="userDao" class="com.dao.impl.UserDAOImpl" scope="singleton">
 <property name="sessionFactory">
  <ref bean="sessionFactory"/>
 </property>
</bean><bean id="userService" class="com.service.impl.UserServiceImpl">
 <property name="userDao">
  <ref bean="userDao"/>
 </property>
</bean><bean id="saveUserAction" class="com.action.SaveUserAction" scope="prototype">
 <property name="userService">
  <ref bean="userService"/>
 </property>
</bean><bean id="listUserAction" class="com.action.ListUserAction" scope="prototype">
 <property name="userService">
  <ref bean="userService"/>
 </property>
</bean>
<bean id="showUserRecordAction" class="com.action.ShowUserRecordAction" scope="prototype">
 <property name="userService">
  <ref bean="userService"/>
 </property>
</bean>
<bean id="updateUserAction" class="com.action.UpdateUserAction" scope="prototype">
 <property name="userService">
  <ref bean="userService"/>
 </property>
</bean><bean id="deleteUserAction" class="com.action.DeleteUserAction" scope="prototype">
 <property name="userService">
  <ref bean="userService"/>
 </property>
</bean>
</beans>

解决方案 »

  1.   

    好像不是用 <property name="mappingResources">
      <list>
      <value>classpath:/com/bean/*.hbm.xml</value>
      </list>mappingDirectoryLocations 或者mappingLocations
      

  2.   

    classpath:/com/bean/*.hbm.xml
    改为
    classpath:/com/bean
    试试
      

  3.   

    <property name="mappingResources">
      <list>
      <value>classpath:/com/bean/*.hbm.xml</value>
      </list>
     </property>改为
    <property name="mappingDirectoryLocations">
    <list>
        <value>classpath:/com/bean</value>
    </list>
    </property>
    试试
      

  4.   

    这个有点效果,但是又报这个错误
    Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
    org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [com.dao.impl.UserDAOImpl] for bean with name 'userDao' defined in ServletContext resource [/WEB-INF/applicationContext.xml]; nested exception is java.lang.ClassNotFoundException: com.dao.impl.UserDAOImpl
    at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1141)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:524)
    at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1177)
    at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:758)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:422)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4172)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4671)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
    at org.apache.catalina.core.StandardService.start(StandardService.java:525)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:701)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:585)
    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.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
    Caused by: java.lang.ClassNotFoundException: com.dao.impl.UserDAOImpl
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1647)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1493)
    at org.springframework.util.ClassUtils.forName(ClassUtils.java:211)
    at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:385)
    at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1138)
    ... 24 more
    这个类我明明存在的
      

  5.   

    你在web.xml文件中
    添加了以下内容吗
    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
    <listener>
    <listener-class>
            org.springframework.web.context.ContextLoaderListener
    </listener-class>
    </listener>
      

  6.   

    参数没配置,listerner配置了
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" 
     xmlns="http://java.sun.com/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
      <listener>
      <listener-class>
       org.springframework.web.context.ContextLoaderListener
      </listener-class>
     </listener>
     <filter>
      <filter-name>struts2</filter-name>
      <filter-class>
       org.apache.struts2.dispatcher.FilterDispatcher
      </filter-class>
     </filter>   <filter-mapping>
      <filter-name>struts2</filter-name>
      <url-pattern>/*</url-pattern>
     </filter-mapping>
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    </web-app>
      

  7.   

    我加了上去,它又说找不到applicationContext.xml文件,这个文件放什么位置好,我是放在web——inf下的
      

  8.   

    你把applicationContext.xml文件放在哪里?
      

  9.   

    哦,你放在web-inf下就不要加参数了
      

  10.   


    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <!-- Action类 -->
    <bean id="loginAction"
    class="com.zds.camis.common.action.LoginAction" scope="prototype">
    <!-- 依赖注入 -->
    <property name="auUserInfoBs" ref="auUserInfoBs" />
    </bean>

    <bean id="classInfoAction"
    class="com.zds.camis.common.action.ClassInfoAction" scope="prototype">
        <property name="classInfoBs" ref="classInfoBs" />
    </bean> <bean id="exitSystemAction"
    class="com.zds.camis.common.action.ExitSystemAction"
    scope="prototype">
    <property name="auUserInfoBs" ref="auUserInfoBs" />
    </bean> <bean id="auUserInfoAction"
    class="com.zds.camis.common.action.AuUserInfoAction"
    scope="prototype">
    <property name="auUserInfoBs" ref="auUserInfoBs" />
    </bean>

    <bean id="departmentAction"
    class="com.zds.camis.common.action.DepartmentAction"
    scope="prototype">
    <property name="departmentBs" ref="departmentBs" />
    </bean>

    <bean id="studentInfoAction"
    class="com.zds.camis.common.action.StudentInfoAction"
    scope="prototype">
    <property name="studentInfoBs" ref="studentInfoBs" />
    </bean>



    <!-- Service类 -->
    <bean id="auUserInfoBs"
    class="com.zds.camis.common.service.impl.AuUserInfoBs">
    <property name="auUserInfoDao" ref="auUserInfoDao" />
    </bean>

    <bean id="classInfoBs"
    class="com.zds.camis.common.service.impl.ClassInfoBs">
    <property name="classInfoDao" ref="classInfoDao"/>
    </bean>

    <bean id="departmentBs"
    class="com.zds.camis.common.service.impl.DepartmentBs">
    <property name="departmentDao" ref="departmentDao" />
    </bean>

    <bean id="studentInfoBs"
    class="com.zds.camis.common.service.impl.StudentInfoBs">
    <property name="studentInfoDao" ref="studentInfoDao" />
    </bean>

    <!-- DAO类 -->
    <bean id="auUserInfoDao"
    class="com.zds.camis.common.dao.impl.AuUserInfoDao" parent="baseDao" />

    <bean id="baseDao" class="com.zds.camis.common.dao.impl.BaseDao">
    <property name="sessionFactory" ref="sessionFactory" />
    </bean>

    <bean id="classInfoDao"
    class="com.zds.camis.common.dao.impl.ClassInfoDao">
    <property name="sessionFactory" ref="sessionFactory"/>
    </bean>

    <bean id="departmentDao"
    class="com.zds.camis.common.dao.impl.DepartmentDao">
    <property name="sessionFactory" ref="sessionFactory" />
    </bean>

    <bean id="studentInfoDao"
    class="com.zds.camis.common.dao.impl.StudentInfoDao">
    <property name="sessionFactory" ref="sessionFactory" />
    </bean>

    <!-- 公共类 -->
    <bean id="transactionManager"
    class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
    </bean> <bean id="transactionInterceptor"
    class="org.springframework.transaction.interceptor.TransactionInterceptor">
    <!-- 事务拦截器bean需要依赖注入一个事务管理器  -->
    <property name="transactionManager" ref="transactionManager" />
    <property name="transactionAttributes">
    <!-- 下面定义事务传播属性 -->
    <props>
    <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
    <prop key="*">PROPAGATION_REQUIRED</prop>
    </props>
    </property>
    </bean> <!-- 定义BeanNameAutoProxyCreator -->
    <bean
    class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
    <!--  指定对满足哪些bean name的bean自动生成业务代理 -->
    <property name="beanNames">
    <!-- 下面是所有需要自动创建事务代理的bean -->
    <list>
    <value>*Bs</value>
    </list>
    <!-- 此处可增加其他需要自动创建事务代理的bean -->
    </property>
    <!-- 下面定义BeanNameAutoProxyCreator所需的事务拦截器-->
    <property name="interceptorNames">
    <list>
    <!-- 此处可增加其他新的Interceptor -->
    <value>transactionInterceptor</value>
    </list>
    </property>
    </bean> <!-- 定义数据源Bean 使用C3P0数据源实现 -->
    <bean id="dataSource"
    class="com.mchange.v2.c3p0.ComboPooledDataSource"
    destroy-method="close">
    <!-- 指定连接数据库的驱动 -->
    <property name="driverClass" value="com.mysql.jdbc.Driver" />
    <!-- 指定连接数据库的URL -->
    <property name="jdbcUrl"
    value="jdbc:mysql://localhost:3306/camis?characterEncoding=utf-8" />
    <!-- 指定连接数据库的用户名 -->
    <property name="user" value="root" />
    <!-- 指定连接数据库的密码 -->
    <property name="password" value="root" />
    <!-- 指定连接数据库连接池的最大连接数 -->
    <property name="maxPoolSize" value="500" />
    <!-- 指定连接数据库连接池的最小连接数 -->
    <property name="minPoolSize" value="1" />
    <!-- 指定连接数据库连接池的初始化连接数 -->
    <property name="initialPoolSize" value="1" />
    <!-- 指定连接数据库连接池的连接的最大空闲时间 -->
    <property name="maxIdleTime" value="20" />
    </bean> <!--定义了Hibernate的SessionFactory -->
    <bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="mappingLocations">
    <list>
    <value>
    classpath:/com/zds/camis/**/model/*.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="hibernate.format_sql">true</prop>
    <prop key="hibernate.use_sql_comments">true</prop>
    <prop key="hibernate.hbm2ddl.auto">update</prop>
    <prop key="hibernate.jdbc.batch_size">20</prop>
    </props>
    </property>
    </bean>
    </beans>
    给你看看我以前的配置希望对你有帮助
      

  11.   

    我用的是eclipse,不用发布,我重启了tomcat没用
      

  12.   

    org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [com.dao.impl.UserDAOImpl] for bean with name 'userDao' defined in ServletContext resource [/WEB-INF/applicationContext.xml]; nested exception is java.lang.ClassNotFoundException: com.dao.impl.UserDAOImpl
    说明你找到了applicationContext.xml没发现com.dao.impl.UserDAOImpl这个类而已,说明只是UserDAOImpl.java没有编译成功
      

  13.   

    怎么会没有编译成功,我重启了tomcat了
      

  14.   


    你这路径有问题么?
    FileNotFoundException: class path resource [classpath:/com/bean/*.hbm.xml] cannot be opened because it does not exist
    你参照一下我的路径写法
    <property name="mappingLocations">
    <list>
    <value>
    classpath:/com/zds/camis/**/model/*.hbm.xml
    </value>
    </list>
    </property>
    希望对你有帮助
      

  15.   

    不是,我现在参照5楼的改了一下,接下来就找不到com.dao.impl.UserDAOImpl这个类了
      

  16.   

    朋友,建议你把以前编译没错的,copy过来看看。  ssh配置这东西 有时候就是这有, 你单词拼写错误怎么的,很难发现, 或者把这个配置文件删除了,重新建一个试试看,这有很难找的。
    希望对你有帮助
      

  17.   

    类的存在和启动tomcat不表示一定会编译成功,不要过度崇拜eclipse
      

  18.   

    你把application.xml文件放到src下  看看能不能找到你的dao类  我估摸着是路径问题。
      

  19.   

    你把配置文件copy到根目录下试试吧。希望对你有帮助
      

  20.   

    com.dao.impl.UserDAOImpl
    复制这个类的的含报名完整路径看看,这点要100%确定一致
      

  21.   

    如果你要重新编译的话,可以选中工程,选择Myeclipse上方菜单栏的project-->clean
    如果你勾选了build auto.., 会自动先清空再重新编译
      

  22.   

    这个类目录src/com/dao/impl/UserDAOImpl.java
      

  23.   

    我用的是这个网页的例子,有空你看看
    http://blog.163.com/zy-oct/blog/static/1093009562010116113319801/
      

  24.   

    可以了,真的是没编译过,clean了一下可以了,在此谢谢各位,特别是5楼的家伙,祝大家新年快乐