【问题标题】:org.springframework.web.servlet.DispatcherServlet not found with VMWare vFabric tc Server and mavenorg.springframework.web.servlet.DispatcherServlet 在 VMWare vFabric tc Server 和 maven 中找不到
【发布时间】:2012-07-06 21:46:50
【问题描述】:

我知道之前发布的一个问题与这个问题非常相似。但该解决方案不适用于我的问题。

我正在尝试使用 Maven 启动一个基本的 Spring 项目。 这是我的 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>

这是我的 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>

我正在使用 VMWare vFabric tc Server Developer Edition v2.6(STS 附带的那个)。当我使用它运行 webapp 时,出现以下错误:

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

我知道它必须与依赖项有关,但是在 Maven 依赖项中,jar spring-webmvc-3.1.1.RELEASE.jar 包含错误所说的缺少的类。 所以看起来服务器不知道库在那里。

有人知道会发生什么吗?

谢谢!

【问题讨论】:

    标签: spring maven spring-mvc sts-springsourcetoolsuite pom.xml


    【解决方案1】:

    在项目选项中,您应该在部署程序集中包含 Maven 依赖项

    1. 项目属性-> 部署程序集 -> 添加..

    2. Java 构建路径条目 -> Maven 依赖项

    3. 完成

    upd: 另请注意,您应该在项目 pom.xml 中将包装设置为 war &lt;packaging&gt;war&lt;/packaging&gt; 然后使用 Maven->Update Project.. 如果您使用 eclipse maven 插件定期更新 STS 项目。

    【讨论】:

      【解决方案2】:

      您必须在部署程序集中包含 maven 依赖项 - 它们不会被部署到网络服务器。这就是你在eclipse中修复这个错误的方法,我猜STS会类似。

      【讨论】:

      • 谢谢!在 STS 中,它位于右键单击项目 > 属性 > 部署程序集
      猜你喜欢
      • 1970-01-01
      • 2012-09-12
      • 1970-01-01
      • 2013-10-17
      • 2011-10-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-02
      • 1970-01-01
      相关资源
      最近更新 更多