最近在写一个spring-mvc相关的一个项目.在spring 的住配置文件中加入了<mvc:annotation-driven/>[spring3.2+]配置。
页面能够正常的访问, 不加这样的一段配置的时候单元测试正常。但是一旦加了这段配置,在做单元测试的时候始终出现一个问题 java.lang.NoClassDefFoundError: javax/servlet/AsyncListener ,在网上看了很多的解决方案,无非就是说到这样的一个类不存在或者说是看看tomcat下面是否有一个servlet-api.jar, 不存在就copy一个。
这似乎不是问题出现的根本原因,按照网上的办法试了几次都无功而返。仔细一想,既然页面访问没有问题,那么tomcat容器就不会有问题,还是得从容器本身着手。想起了jar 的加载时期,对于页面的访问来说,它是依赖了我们的tomcat容器而运行,那么这样的一个包就存在。
单元测试不再依赖我们的tomcat容器,而是单独的运行,那么就需要这样的一个包。想到此处,毫不犹豫的去tomcat下面把servlet-api.jar[|jsp-api.jar]拷贝到项目下面WEB—INF/lib/junit-dependence 下面 ,再次单元测试,过了 。折腾大半个小时才解决的问题,特记录下来,希望能解决您出现的问题