2017-07-27 81 views
0

我试图在不使用任何xml配置的情况下运行spring web mvc应用程序。我试图取代我的所有配置,以在春季上市的基于注解配置4Spring mvc 4 hello world示例抛出javax.servlet.ServletException:无法实例化WebApplicationInitializer类

我面对像

javax.servlet.ServletException: Failed to instantiate WebApplicationInitializer class 
at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:160) 
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5178) 
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409) 
at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:748) 

Caused by: java.lang.Error: Unresolved compilation problem: 
The type org.springframework.context.annotation.AnnotationConfigRegistry cannot be resolved. It is indirectly referenced from required .class files 

at com.candidjava.spring.configuration.SpringWebIntializer.<init>(SpringWebIntializer.java:18) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
at java.lang.Class.newInstance(Class.java:442) 
at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:157) 
... 8 more 
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener 
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1285) 
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1119) 
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:520) 
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:501) 
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118) 
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4649) 
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5189) 
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409) 
at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:748) 

一些例外,下面依赖性春4 Web MVC框架的例子

<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/maven-v4_0_0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>com.candidjava.spring</groupId> 
<artifactId>spring4helloworld</artifactId> 
<packaging>war</packaging> 
<version>0.0.1-SNAPSHOT</version> 
<name>spring4helloworld</name> 
<url>http://maven.apache.org</url> 
<dependencies> 

    <dependency> 
     <groupId>jstl</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.2</version> 
     <scope>compile</scope> 
    </dependency> <!-- Spring Core --> 
    <!-- Servlet 3.1 --> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>3.1.0</version> 
    </dependency> 

    <!-- https://mvnrepository.com/artifact/org.springframework/spring-context --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
     <version>3.0.2.RELEASE</version> 
    </dependency> 


    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>4.2.2.RELEASE</version> 
    </dependency> 



</dependencies> 
<build> 

    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-eclipse-plugin</artifactId> 
      <version>2.9</version> 
      <configuration> 
       <downloadSources>true</downloadSources> 
       <downloadJavadocs>false</downloadJavadocs> 
       <wtpversion>2.0</wtpversion> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.1</version> 
      <configuration> 
       <source>1.8</source> 
       <target>1.8</target> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <configuration> 
       <webResources> 
        <resource> 
         <directory>${project.build.sourceDirectory}</directory> 
         <targetPath>WEB-INF/classes</targetPath> 
        </resource> 
       </webResources> 
      </configuration> 
     </plugin> 
    </plugins> 

    <finalName>spring4helloworld</finalName> 
</build> 

添加

任何人都可以告诉我为什么我面临这样的问题,以及如何解决这个问题

回答

2

从你的pom.xml中删除低于扶养

<!-- https://mvnrepository.com/artifact/org.springframework/spring-context --> 
<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-context</artifactId> 
    <version>3.0.2.RELEASE</version> 
</dependency> 

Spring的web-MVC扶养本身足以下载弹簧上下文和其他相关的罐子

目前你的春天背景依赖与其他罐子混淆

按照此示例使用基于java的配置运行干净的spring mvc hello world example

你可以找到更多春季指南official site`