最近工作很忙,忙得连博客也没时间更新了。
忙什么呢,项目开发嘛,这次项目有一小部分是直接搬移的以前的项目,应该说这次项目就是在以前一个项目上来做的,但是,项目中的框架模式都要更新到最近版本,其中在spring2.0升级到spring2.5时就出问题了,第一个问题就是在更换spring.jar后,启动项目时,出现java.lang.ClassNotFoundException: org.springframework.web.struts.ContextLoaderPlugIn 错误,其次就是在spring2.5中缺少了一个JAR:spring-mock.jar。我在spring2.5的压缩包里没有找到这个JAR,不过发现了mock的一个源码文件夹。
其实这两个问题都是spring2.5的jar包里没有附带这些类,而是单独放在其它JAR里,详细说明如下:
在Spring 2.5中, Spring Web MVC 不再是 'spring.jar' 文件的一部分. Spring MVC以'spring-webmvc.jar' 和'spring-webmvc-portlet.jar'文件形式在发行包的 lib/modules 目录中存在。 另外,对Struts 1.x的支持被独立成 'spring-webmvc-struts.jar'。
注意: 经常被使用的Spring的DispatcherServlet也是Spring Web MVC框架的一部分。 因此,就算你只是为了远程访问(例如,暴露Hessian或者 HTTP调用服务)而使用DispatcherServlet,你也得将'spring-webmvc.jar'(或者 'spring-webmvc-portlet/struts.jar')放到'spring.jar'旁边去。Spring 2.5的 'spring-test.jar' 取代了'spring-mock.jar',表达其对test context framework的强烈关注。 注意 'spring-test.jar' 包含了上个版本 'spring-mock.jar'中的一切,因此如果是单元或集成测试,可以直接取代
解决办法:第一个问题是因为我的系统使用的是Struts1.2,所以还应该加入'spring-webmvc-struts.jar'包就可以了。第二个问题只要加入'spring-test.jar' 包就可以了,应该说,还是比较容易解决的,只要我们了解一下spring2.5与2.0的差别就会知道了。。。。。
Tags: spring ClassNotFoundException struts JAVA