2016-03-27 172 views
0

我在嘗試使用Spring Framework時遇到了很多麻煩,並且不知道錯誤在哪裏。我正在使用Tomcat 7.0.68部署應用程序。Spring MVC應用程序不能與Tomcat和Eclipse一起工作

當我嘗試使用URL(http://localhost:8080/fj21-spring/olaMundo)我得到一個404錯誤,但它應該被映射到打電話給我的行動方法上我的控制器類,如下:

package com.caelum.tarefas.controller; 

import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 

@Controller 
public class TarefasController { 

    @RequestMapping("/olaMundo") 
    public String execute(){ 
     return "ok"; 
    } 
} 

我的聚甲醛。 xml文件是什麼如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
 
    <modelVersion>4.0.0</modelVersion> 
 
    <groupId>com.caelum.tarefas</groupId> 
 
    <artifactId>fj21-spring</artifactId> 
 
    <version>0.0.1-SNAPSHOT</version> 
 
    <name>fj21-spring</name> 
 
    <build> 
 
    <sourceDirectory>src</sourceDirectory> 
 
    <plugins> 
 
     <plugin> 
 
     <artifactId>maven-compiler-plugin</artifactId> 
 
     <version>3.3</version> 
 
     <configuration> 
 
      <source>1.8</source> 
 
      <target>1.8</target> 
 
     </configuration> 
 
     </plugin> 
 
    </plugins> 
 
    </build> 
 
    
 
    \t <dependencies> 
 
\t \t <dependency> 
 
\t \t \t <groupId>org.springframework</groupId> 
 
\t \t \t <artifactId>spring-context</artifactId> 
 
\t \t \t <version>4.2.5.RELEASE</version> 
 
\t \t </dependency> 
 
\t \t <dependency> 
 
\t \t \t <groupId>org.springframework</groupId> 
 
\t \t \t <artifactId>spring-aop</artifactId> 
 
\t \t \t <version>4.2.5.RELEASE</version> 
 
\t \t </dependency> 
 
\t \t <dependency> 
 
\t \t \t <groupId>org.springframework</groupId> 
 
\t \t \t <artifactId>spring-webmvc</artifactId> 
 
\t \t \t <version>4.2.5.RELEASE</version> 
 
\t \t </dependency> 
 
\t \t <dependency> 
 
\t \t \t <groupId>org.springframework</groupId> 
 
\t \t \t <artifactId>spring-web</artifactId> 
 
\t \t \t <version>4.2.5.RELEASE</version> 
 
\t \t </dependency> 
 
\t \t <dependency> 
 
\t \t \t <groupId>javax.servlet</groupId> 
 
\t \t \t <artifactId>jstl</artifactId> 
 
\t \t \t <version>1.2</version> 
 
\t \t </dependency> 
 
\t \t <dependency> 
 
\t \t \t <groupId>commons-logging</groupId> 
 
\t \t \t <artifactId>commons-logging</artifactId> 
 
\t \t \t <version>1.1.3</version> 
 
\t \t </dependency> 
 
\t \t <dependency> 
 
\t \t \t <groupId>org.springframework</groupId> 
 
\t \t \t <artifactId>spring-jdbc</artifactId> 
 
\t \t \t <version>4.2.5.RELEASE</version> 
 
\t \t </dependency> 
 
\t \t <dependency> 
 
\t \t \t <groupId>org.springframework</groupId> 
 
\t \t \t <artifactId>spring-aspects</artifactId> 
 
\t \t \t <version>4.2.5.RELEASE</version> 
 
\t \t </dependency> 
 
\t \t <dependency> 
 
\t \t \t <groupId>org.slf4j</groupId> 
 
\t \t \t <artifactId>slf4j-api</artifactId> 
 
\t \t \t <version>1.7.19</version> 
 
\t \t </dependency> \t \t \t 
 
\t \t <dependency> 
 
\t \t \t <groupId>org.slf4j</groupId> 
 
\t \t \t <artifactId>slf4j-log4j12</artifactId> 
 
\t \t \t <version>1.7.19</version> 
 
\t \t </dependency> \t 
 
\t </dependencies> 
 
</project>

而且我的web.xml:

<?xml version="1.0" encoding="UTF-8"?> 
 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> 
 
    <display-name>fj21-spring</display-name> 
 
    <welcome-file-list> 
 
    <welcome-file>index.html</welcome-file> 
 
    <welcome-file>index.htm</welcome-file> 
 
    <welcome-file>index.jsp</welcome-file> 
 
    <welcome-file>default.html</welcome-file> 
 
    <welcome-file>default.htm</welcome-file> 
 
    <welcome-file>default.jsp</welcome-file> 
 
    </welcome-file-list> 
 
    
 
    <servlet> 
 
     <servlet-name>spring</servlet-name> 
 
     <servlet-class> 
 
      org.springframework.web.servlet.DispatcherServlet 
 
     </servlet-class> 
 
     <load-on-startup>1</load-on-startup> 
 
    </servlet> 
 
    <servlet-mapping> 
 
     <servlet-name>spring</servlet-name> 
 
     <url-pattern>/</url-pattern> 
 
    </servlet-mapping> 
 
    
 
</web-app>

我的Spring XML配置文件:

<?xml version="1.0" encoding="UTF-8"?> 
 
<beans xmlns="http://www.springframework.org/schema/beans" 
 
\t xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" 
 
\t xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 
\t xsi:schemaLocation=" 
 
     http://www.springframework.org/schema/beans  
 
     http://www.springframework.org/schema/beans/spring-beans.xsd 
 
     http://www.springframework.org/schema/mvc 
 
     http://www.springframework.org/schema/mvc/spring-mvc.xsd 
 
     http://www.springframework.org/schema/context 
 
     http://www.springframework.org/schema/context/spring-context.xsd"> 
 
    
 
\t <context:component-scan base-package="com.caelum.tarefas" /> 
 
    \t <mvc:annotation-driven></mvc:annotation-driven> 
 
    \t 
 
\t <bean class="org.springframework.web.servlet.view.UrlBasedViewResolver"> 
 
\t \t <property name="prefix" value="/WEB-INF/views/" /> 
 
\t \t <property name="suffix" value=".jsp" /> 
 
\t </bean> 
 
</beans>

我希望有人可以幫助我。我曾嘗試在Eclipse中重新創建服務器,刪除了該項目並創建了另一個,但直到現在還沒有任何工作。

謝謝!

編輯

我對Controller類註釋改爲@RequestMapping後(值=「/ olaMundo」),Tomcat的寫在控制檯上一個堆棧跟蹤,它遵循(也許我太之前錯過了這個堆棧跟蹤):

GRAVE: Servlet [spring] in web application [/fj21-spring] threw load() exception 
java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet 
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1858) 
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1701) 
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:504) 
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:486) 
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:113) 
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1146) 
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1085) 
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5318) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5610) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1572) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1562) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
+0

請不要發佈錯誤鏈接,而是直接將錯誤內容添加到您的問題。 – pczeus

+0

也許你應該包含關於你如何嘗試訪問控制器方法的信息。什麼是你打的完整URL?你如何部署你的應用程序?它看起來在Tomcat上。這是一場戰爭嗎?爆炸戰爭?你的戰名是什麼? – pczeus

+0

編輯您的問題並複製Tomcat在Eclipse的選項卡「控制檯」中生成的堆棧跟蹤。 404錯誤沒有解釋任何東西,你可以刪除圖像。只需複製URL並記下它生成的404。 – RubioRic

回答

0

您嘗試顯示的jsp是否叫做「ok.jsp」? 如果不是這樣,那麼當您的控制器返回「ok」時,它將在您的視圖文件夾中查找。

嘗試更換您的@RequestMapping("/olaMundo")@RequestMapping(value="/olaMundo")

+0

是的,我的視圖文件夾中有一個「ok.jsp」文件。 –

+0

不工作,但謝謝你的人! –

+1

我不低估你。如果你看到,有人也低估了我的問題。我甚至試圖「提高」你,但我是StackOverflow的新手,沒有足夠的聲望讓我的選票改變,其他人可以看到。 –

0

我看到的ClassNotFoundException。 檢查lib目錄中的jar文件,並檢查這樣的配置。 屬性 - >部署程序集 enter image description here

相關問題