Spring MVC 使用 STS 和 tomcat devloader

Posted

技术标签:

【中文标题】Spring MVC 使用 STS 和 tomcat devloader【英文标题】:Spring MVC using STS with tomcat devloader 【发布时间】:2014-08-24 21:22:24 【问题描述】:

我按照本教程创建了一个 Spring MVC Web 应用程序: http://www.journaldev.com/2433/spring-mvc-tutorial-for-beginners-with-spring-tool-suite

我可以使用 STS 中的内置服务器访问它。现在,我想在 Eclipse 中使用 tomcat devloader 插件部署和测试我的 Web 应用程序。当我尝试使用 tomcat 运行它时,出现此错误:

SEVERE: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4153)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4709)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:583)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:675)
at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:601)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1317)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1065)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:822)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

您是否知道可能导致此错误的原因以及如何解决此问题?

谢谢。

【问题讨论】:

您忘记在 bin 中添加一些库。 我应该添加哪些库? 根据谷歌 spring-web.jar 我现在添加了该库以及其他 3 个 Spring 库,即 spring-beans、spring-context 和 spring-core。现在我得到一个不同的错误: 严重:向类 org.springframework.web.context.ContextLoaderListener java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory 的侦听器实例发送上下文初始化事件的异常 【参考方案1】:

来自here 的spring-web.jar 并将其添加到类路径中。还要确保您的服务器类路径已包含 Spring jar 库。还包含 commons loggings.jar

【讨论】:

【参考方案2】:

当您不断收到这些 NoClassDefFoundError /CLassNotFound 异常时,请尝试复制第一行 'org/apache/commons/logging/LogFactory' 并在最后附加 .jar 进行谷歌搜索。您将不知道要包含什么罐子。

【讨论】:

我已经添加了所有需要的 jars 并且运行 tomcat 没有错误但是我无法访问我的页面。我总是得到 HTTP 状态 404。 检查您正在尝试的网址。项目名称是什么?您正在尝试的 .jsp/.html 是什么以及 url 是什么? 在我的tomcat设置中,上下文名称是sme。我还将目录添加为 Web 根目录:/src/main/webapp。在 devloader 设置中,我检查了所有复选框。然后当我尝试在浏览器中访问 localhost:8080/sme/ 时,我得到 Http 404 错误。然后就没有stacktrace了。 您是否为您的项目设置了起始页?在tomcat中的项目根目录中放置一个 index.html 并尝试 localhost:8080/sme/index.html 如果您不想提及 index.html,请尝试***.com/questions/14648167/… web.xml 中的此欢迎页面。我认为您的项目设置正确。

以上是关于Spring MVC 使用 STS 和 tomcat devloader的主要内容,如果未能解决你的问题,请参考以下文章

Spring MVC - 无法呈现视图

Spring Tool Suite 3.7:创建 Spring MVC 项目的选项在哪里

了解 Spring MVC 中的上下文

springmvc 项目完整示例07 spring mvc

Java Spring MVC分层设计

springboot—— 使用STS作为IDE实现MVC模式的Web程序