java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderServlet

异常及处理办法 专栏收录该内容
12 篇文章 0 订阅

java.lang.ClassNotFoundException:org.springframework.web.context.ContextLoaderServlet

ContextLoaderServlet 没有成功加载,导致web.xml构建spring容器失败!所以在引用WebApplicationContextUtils时,出现java.lang.NoClassDefFoundError:org/springframework/web/context/support/WebApplicationContextUtils

情况1:

WebApplicationContext wctx=WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);

我的spring-web.jsr的包已经加上了,为什么程序运行时,找不到WebApplicationContextUtils类呢?

有一个教程上说了这样的一句话,“在Action初始化时获得一个应用程序上下文。重用spring的WebApplicationContextUtils类,如果没有可用的上下文,该动作不会正确的初始”。

 

情况2:(大多数是在这,被雷到了!哈哈)

你的工程包有可能都是引用的,需要把它们都手动拷贝到工程中来!

 

情况3:

spring框架有自已内在一套映射机制,该问题是由于没有找到相应的映射BEAN引用而产生!

<context-param>
    <param-name>contextconfiglocation</param-name>
    <param-value>com/practice/hibernate/test/wenjing-servlet.xml</param-value>
</context-param>

这一段换一种方式试一试,可以写到spring-servlet.xml当中引用,如下:

<bean id="newBaseAction" class="db.PBaseAction">
    <property name="view"><value>newBaseAction</value></property>
</bean>   

 

情况4:

你用的是hibernate3.0的话, 但你spring配置文件中不是下面
<bean id="sessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
应是:
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

 

情况5:

1、将spring的相关jar包,拷贝到web应用的WEB-INF/lib目录下

2、修改web.xml,让应用服务器自动加载spring的BeanFactory对象

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext-*.xml,classpath*:applicationContext-*.xml</param-value>
</context-param>

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

3、在web组件里,可以使用WebApplicationContextUtils工具类来获得BeanFactory对象的实例,拥有了BeanFactory对象,就拥有了spring的容器管理的能力。
说明:
  
这种配置的结果是,spring通过ContextLoaderListener将WebApplicationContext对象(BeanFactory的子类)放入ServletContext中,并取名为一个静态变量的值:
   WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE
  
* 通过WebApplicationContextUtils.getApplicationContext()方法就可以获得WebApplicationContext对象的值
   * 或者通过request.getSession().getServletContext().getAttribute(WebApplicationContext.ROOT_WEB_APPLICAT

 

以上

  • 4
    点赞
  • 9
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 精致技术 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值