Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

org.springframework.web.servlet.DispatcherServlet not found with VMWare vFabric tc Server and maven

I know that there is a previously posted question that is very similar to this one. But the solution doesn't apply to my problem.

I'm trying to start a basic Spring project with Maven. This is my pom.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>es.indra</groupId>
  <artifactId>springappUV</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <properties>
    <org.springframework.version>3.1.1.RELEASE</org.springframework.version>
  </properties>
  <packaging>war</packaging>
  <dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.10</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${org.springframework.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${org.springframework.version}</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
        <scope>provided</scope>
    </dependency>
  </dependencies>
</project>

This is my 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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>springappUV</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

  <servlet>
    <servlet-name>springapp</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
       <param-name>contextConfigLocation</param-name>
       <param-value>/WEB-INF/spring/app-config.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>springapp</servlet-name>
    <url-pattern>*.htm</url-pattern>
  </servlet-mapping>
</web-app>

I am using VMWare vFabric tc Server Developer Edition v2.6 (the one that comes with STS). When I run the webapp with it, I get the following error:

GRAVE: El Servlet /springappUV lanzó excepción de load()
java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678)
    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.StandardWrapper.loadServlet(StandardWrapper.java:1099)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1043)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4957)
    at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5284)
    at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5279)
    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:662)
06-jul-2012 14:06:56 org.apache.catalina.startup.HostConfig deployDirectory

I know it must have to do with the dependencies, but in the Maven dependencies the jar spring-webmvc-3.1.1.RELEASE.jar contains the class that the error says is missing. So it seems that the server doesn't know that the library is there.

Does anyone know what could be happening?

Thanks!

like image 844
Neets Avatar asked Jul 06 '12 12:07

Neets


1 Answers

In project options you should include Maven Dependencies to your Deployment Assembly enter image description here

  1. Project properties-> Deployment Assembly -> Add..

  2. Java Build Path Entries -> Maven Dependencies

  3. Finish

upd: Please also note that you should set packaging to war in your project pom.xml <packaging>war</packaging> and then use Maven->Update Project.. if you are using eclipse maven plugin to update STS project periodically.

like image 129
Boris Treukhov Avatar answered Oct 11 '22 15:10

Boris Treukhov