java.lang.NoClassDefFoundError:org / springframework / context / EnvironmentAware

我正在使用spring mvc创建一个Web应用程序。 我已经开始合并Spring Security库。 我现在在tomcat日志中遇到以下错误,当我尝试使用eclipse将其部署到tomcat时。

我在我的库中使用以下jar版本

  • spring framework 3.1.1.RELEASE
  • spring框架安全版本3.1.0.RELEASE

我也使用STS版本的eclipse,maven和vmware vfabric tc Server(捆绑了sts)。

这是tomcat日志

SEVERE: Exception starting filter springSecurityFilterChain java.lang.NoClassDefFoundError: org/springframework/context/EnvironmentAware at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) at java.lang.ClassLoader.defineClass(ClassLoader.java:615) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2820) at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1150) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) at java.lang.ClassLoader.defineClass(ClassLoader.java:615) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2820) at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1150) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523) at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:415) at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:397) at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118) at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:252) at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:372) at org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:98) at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4584) at org.apache.catalina.core.StandardContext$2.call(StandardContext.java:5262) at org.apache.catalina.core.StandardContext$2.call(StandardContext.java:5257) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:680) Caused by: java.lang.ClassNotFoundException: org.springframework.context.EnvironmentAware at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523) ... 30 more 

这是我的web.xml文件

   <!-- Display Name is used vides a short name for the application, which will be displayed in the Tomcat Manager application. When used in , this tag provides a name for the security constraint. --> ImaginateFramework  index.jsp   spring  org.springframework.web.servlet.DispatcherServlet  1   spring /   spring *.html|*.htm|*.xhtm|*.jsp|*.jsf|*.php|*.pl|*.cf    springSecurityFilterChain org.springframework.web.filter.DelegatingFilterProxy   springSecurityFilterChain /*  

这是我的spring-servlet.xml文件

                                         classpath:hibernate.cfg.xml   org.hibernate.cfg.AnnotationConfiguration    ${jdbc.dialect} true                /WEB-INF/tiles.xml                    

(编辑)pom.xml

  4.0.0 myapp MyApp war 0.0.1-SNAPSHOT App    org.apache.maven.plugins maven-war-plugin 2.1.1   org.apache.maven.plugins maven-compiler-plugin 2.3.2  1.6 1.6      3.1.1.RELEASE 3.1.0.RELEASE 3.0.0 UTF-8    commons-beanutils commons-beanutils 1.8.0   commons-digester commons-digester 2.0   log4j log4j 1.2.16   org.slf4j slf4j-api 1.5.8   org.slf4j slf4j-log4j12 1.4.2   org.apache.tiles tiles-api ${org.apache.tiles}   org.apache.tiles tiles-core ${org.apache.tiles}   org.apache.tiles tiles-jsp ${org.apache.tiles}   org.apache.tiles tiles-servlet ${org.apache.tiles}   org.apache.tiles tiles-template ${org.apache.tiles}   javax.servlet servlet-api 2.5  <!--  org.springframework.webflow spring-webflow 2.3.1.RELEASE  -->  org.springframework.security spring-security-web ${org.springframework.security.version}   org.springframework.security spring-security-config ${org.springframework.security.version}   org.springframework spring-beans ${org.springframework.version}   org.springframework spring-jdbc ${org.springframework.version}   org.springframework spring-web ${org.springframework.version}   org.springframework spring-webmvc ${org.springframework.version}   org.springframework spring-orm ${org.springframework.version}   hibernate hibernate-entitymanager 3.4.0.GA   taglibs standard 1.1.2   javax.servlet jstl 1.2   mysql mysql-connector-java 5.1.10   commons-dbcp commons-dbcp 20030825.184428   commons-pool commons-pool 20030825.183949   org.apache.commons commons-lang3 3.1   

EnvironmentAware位于spring-context-3.1.1.RELEASE.jar中,因此您缺少那个。

还要重新检查你的Maven POM文件,这样你就不会错过任何其他Spring库,比如spring-web,spring-webmvc(如果找到DispatcherServlet类,你可能会有这些),如果你使用像Hibernate这样的ORM,那么spring-orm,spring -jms如果你使用JMS等

您缺少运行时类路径上的spring-mvc jar。 导航到爆炸的战争并确保lib目录中存在spring-webmvc-3.1.1.RELEASE.jar。

尝试清理项目,然后重新部署项目。 如果它仍然不起作用,请检查您的弹簧库是否有任何库。