Maven,Eclipse,Spring,Tomcat和ClassNotFoundException SpringServletContainerInitializer

时间:2015-05-15 08:48:18

标签: java eclipse spring maven tomcat8

我的Maven Eclipse Project使用Spring 4.1.6.RELEASE,java 8和Tomcat 8服务器进行部署。当我使用控制台“mvn package”构建项目并通过/ manager部署.war文件时,它工作正常。但是当我想要使用Eclipse及其“Run on Server”选项时,它会抛出这样的结果:

ava.io.IOException: java.lang.ClassNotFoundException: org.springframework.web.SpringServletContainerInitializer...

在控制台的最后我可以看到

May 15, 2015 10:39:08 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 1424 ms

但我无法打开tomcat的经理或我的网站(HTTP状态404)

我很确定Eclipse Build路径或Assembly Dependency存在问题,但我不知道该怎么做。

的pom.xml(依赖):

<properties>
  <spring.version>4.1.6.RELEASE</spring.version>
</properties>
<build>
  <sourceDirectory>src</sourceDirectory>
  <plugins>
    <plugin>
      <artifactId>maven-war-plugin</artifactId>
      <version>2.4</version>
      <configuration>
        <warSourceDirectory>WebContent</warSourceDirectory>
        <failOnMissingWebXml>false</failOnMissingWebXml>
      </configuration>
    </plugin>
    <plugin>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.1</version>
      <configuration>
        <source>1.8</source>
        <target>1.8</target>
      </configuration>
    </plugin>
  </plugins>
</build>
<dependencies>
  <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.0.1</version>
  </dependency>
<!-- Spring dependencies -->
  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>${spring.version}</version>
  </dependency>

  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>${spring.version}</version>
  </dependency>

  <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>${spring.version}</version>
  </dependency>
</dependencies>

修改

在错误消息之前有两行:

May 15, 2015 11:38:19 AM org.apache.catalina.startup.ContextConfig processServletContainerInitializers
SEVERE: Failed to process JAR found at URL [/aaaa] for ServletContainerInitializers for context with name [{1}]

3 个答案:

答案 0 :(得分:0)

可能的解决方案

  1. 打开项目的属性(例如,右键单击项目资源管理器中的项目名称,然后选择&#34;属性&#34;)。
  2. 选择&#34;部署程序集&#34;。
  3. 点击&#34;添加...&#34;右边缘的按钮。
  4. 选择&#34; Java Build Path Entries&#34;从指令类型菜单中单击&#34;下一步&#34;。
  5. 选择&#34; Maven Dependencies&#34;从Java Build Path Entries菜单中单击&#34; Finish&#34;。

答案 1 :(得分:0)

tomcat管理器问题是因为Eclipse没有将ROOT和管理器目录从Tomcat的webapps复制到wtpwebapps。 Wtpwebapps是Eclipse自己的webbapp部署的单独文件夹,即当您通过eclipse直接部署Web应用程序时。确保手动将webapps中的所有内容复制到wtpwebapps。

答案 2 :(得分:0)

好的,谢谢所有答案。转换为Maven项目从项目中删除了EAR库和Webapp库。解决方案是再次添加它们。