Exception starting filter encoding java.lang.NoClassDefFoundError: org/springframework/context/EnvironmentAware at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:3222)
at
org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:1409) at
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1897) at
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:17
1) at java.lang.ClassLoader.defineClass1(Native Method) at
java.lang.ClassLoader.defineClass(ClassLoader.java:763) at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at
org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.
java:3222) at
org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:1409) at
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1897) at
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1771) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
一开始看见这个错误我是懵逼了的,第一次见,而且我的项目前面是正常运行起来了的,只是突然就在tomcat启动时报了错误,(我在同一个tomcat上跑了两个web项目,另一个完好无损,而突然出错这个连webapp目录下的index.jsp都访问不了),我一开始怀疑我不经意把代码修改了,可是我对照另一个项目仔细检查发现完全没毛病啊,找了很多博客,尝试了很多方法:
1、直接打成war包放到tomcat--->失败
2、更换tomcat--->结果还是失败
3、更换jdk--->失败
4、修改myeclipse编译器和Dynamic Web Module 版本--->失败
毫无例外,浏览器报的错误全是,tomcat/webapp目录下不存在我访问的action或者jsp,控制台只是在启动时报了上面那个错误,所以我一度以为我的路径出了问题,然后拼命检查、测试,然鹅可并不是这个问题。
最后嗯,又是一次崩溃的边缘,我尝试了一下去pom.xml里把org/springframework/context/里说的context依赖加上了,然后出结果了,这次报的是:org/springframework/beans/同样pom.xml添加相关依赖。。。。。就这样后边还加了几个依赖,直到控制台不报错了,最后去浏览器尝试了一下,果然就是这个问题,好了解决收工。
下面是之后导入的jar包:
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.3.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.3.0.RELEASE</version>
</dependency>
总结一下,这个问题类似ClassNotFoundException,缺少jar包,导入依赖就完事;
我一开没注意到这个问题的原因是,刚开始我在maven dependencies里找到了报错所说的context依赖jar包的,所以我一直没管它,只是拼命查路径问题。
最终看到别人的解释是maven加载有点问题,(我一开始没有导入这些jar包也能完美运行,后面突然又不行了,我至今只能是有个大概猜想,希望来个大佬指点下迷津,emmmm)