我是这个论坛的新手。我正在尝试使用spring 3.2.6和tomcat 7.0创建一个应用程序。我在WEB-INF / lib文件夹中添加了所有必需的jar。 DispatcherServlet和ContextLoaderListener在web.xml中正确配置。相同的应用程序在spring 3.0.2版本上运行良好。现在,当我尝试打开jsp页面时,它给出了以下错误:
HTTP状态500 - org / springframework / web / servlet / HttpServletBean: 组织/ springframework的/上下文/ EnvironmentAware
输入例外报告
message org / springframework / web / servlet / HttpServletBean: 组织/ springframework的/上下文/ EnvironmentAware
description服务器遇到阻止它的内部错误 完成此请求。
例外
java.lang.NoClassDefFoundError: org / springframework / web / servlet / HttpServletBean: 组织/ springframework的/上下文/ EnvironmentAware java.lang.ClassLoader.defineClass1(本机方法) java.lang.ClassLoader.defineClassCond(ClassLoader.java:632) 需要java.lang.ClassLoader.defineClass(ClassLoader.java:616) java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2895) org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1173) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1681) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) java.lang.ClassLoader.defineClass1(本机方法) java.lang.ClassLoader.defineClassCond(ClassLoader.java:632) 需要java.lang.ClassLoader.defineClass(ClassLoader.java:616) java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2895) org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1173) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1681) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) java.lang.ClassLoader.defineClass1(本机方法) java.lang.ClassLoader.defineClassCond(ClassLoader.java:632) 需要java.lang.ClassLoader.defineClass(ClassLoader.java:616) java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2895) org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1173) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1681) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:491) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023) org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:589) org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:312) java.util.concurrent.ThreadPoolExecutor中的$ Worker.runTask(ThreadPoolExecutor.java:886) java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:908) java.lang.Thread.run(Thread.java:662)
注意Apache中提供了根本原因的完整堆栈跟踪 Tomcat / 7.0.42日志。
罐子
弹簧上下文3.2.6.RELEASE
已添加到类路径中。我也可以从Eclipse打开类文件。但我不明白为什么它在运行时给出类未找到的错误。我试图在谷歌搜索它,但没有找到确切的解决方案。 提前谢谢。
答案 0 :(得分:0)
班级org.springframework.web.servlet.HttpServletBean
是spring-webmvc
的一部分。您还需要将该库添加到类路径中。你可以得到它here。
答案 1 :(得分:0)
如果它适用于旧版本(正如你所说),我猜有些地方你在路径中有旧jar,这搞乱了jar依赖 我建议你做一个完整的磁盘搜索,找出你所有的弹簧罐位置并清理它们。 BTW:您可以尝试将jar添加到tomcat / lib中进行尝试(这不是正确的做法,但这有助于找出它是否与路径相关)。
答案 2 :(得分:0)
EnvironmentAware位于spring-context-3.1.1.RELEASE.jar中,所以你错过了那个。
还要重新检查你的Maven POM文件,这样你就不会错过任何其他Spring库,比如spring-web,spring-webmvc(如果找到DispatcherServlet类,你可能会有这些文件),如果你使用ORM就可以使用spring-orm如果你使用JMS等,Hibernate,spring-jms
答案 3 :(得分:0)
我有这个问题。我通过添加jar来解决它:
org.springframework.context-3.1.0.RELEASE.jar
到构建路径和maven依赖项(java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet error)
希望有所帮助