Eclipse+Maven+Spring,按照教程去做第一个Sample.
在Tomcat中执行出现:
Servlet.init() for servlet MyDispatcherServlet threw exceptiondescription The server encountered an internal error that prevented it from fulfilling this request.exception javax.servlet.ServletException: Servlet.init() for servlet MyDispatcherServlet threw exception
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1813)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
java.lang.Thread.run(Thread.java:722)
root cause org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: file [C:\ItDevelop\Tomcat7\webapps\Spring-MVC-0.0.1-SNAPSHOT\WEB-INF\classes\controller\MyController.class]; nested exception is java.lang.IncompatibleClassChangeError: class org.springframework.core.type.classreading.ClassMetadataReadingVisitor has interface org.springframework.asm.ClassVisitor as super class
org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:281)
org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:242)
org.springframework.context.annotation.ComponentScanBeanDefinitionParser.parse(ComponentS
代码参考例子: https://github.com/khyiu/Spring-MVC-Tutorials
原文:http://kh-yiu.blogspot.com/2012/05/quick-tutorial-to-spring-mvc-with-maven.html
请问哪里配置不对吗? 多谢eclipsespringservlet

解决方案 »

  1.   

    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_2_5.xsd"
    id="WebApp_ID" version="2.5">
    <display-name>Spring MVC tutorial</display-name> <servlet>
    <servlet-name>MyDispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    </servlet> <servlet-mapping>
    <servlet-name>MyDispatcherServlet</servlet-name>
    <url-pattern>*.do</url-pattern>
    </servlet-mapping></web-app>
    MyDispatcherServlet-servlet.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
    http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd"><!-- Enabling Spring MVC configuration through annotations -->
    <mvc:annotation-driven /><!-- Enabling Spring beans auto-discovery -->
    <context:component-scan base-package="controller" /><!-- Defining which view resolver to use -->
    <bean class= "org.springframework.web.servlet.view.InternalResourceViewResolver" >
    <property name="prefix" value="/WEB-INF/views/" />
    <property name="suffix" value=".jsp" />
    </bean>
    </beans>
      

  2.   

    还有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>Spring-MVC</groupId>
    <artifactId>Spring-MVC</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging> <build>
    <plugins>
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.3</version>
    <configuration>
    <!-- specifiy which directory within the project hierarchy will be considered 
    as the root directory from the generated war file -->
    <warSourceDirectory>WebContent</warSourceDirectory>
    </configuration>
    </plugin>
    </plugins>
    </build>
    <dependencies>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>3.2.1.RELEASE</version>
    <type>jar</type>
    <scope>compile</scope>
    </dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>3.2.1.RELEASE</version>
    <type>jar</type>
    <scope>compile</scope>
    </dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-asm</artifactId>
    <version>3.1.4.RELEASE</version>
    <type>jar</type>
    <scope>compile</scope>
    </dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>3.2.1.RELEASE</version>
    <type>jar</type>
    <scope>compile</scope>
    </dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>3.2.1.RELEASE</version>
    <type>jar</type>
    <scope>compile</scope>
    </dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aop</artifactId>
    <version>3.2.1.RELEASE</version>
    <type>jar</type>
    <scope>compile</scope>
    </dependency>
    </dependencies>
    </project>
      

  3.   


        <servlet>
            <servlet-name>MyDispatcherServlet</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
        </servlet> 
    <bean id="viewResolver" class= "org.springframework.web.servlet.view.InternalResourceViewResolver" >
    <property name="prefix" value="/WEB-INF/views/" />
    <property name="suffix" value=".jsp" />
    </bean>改为这样试下呢
      

  4.   

    THX,修改之后还是原来的错误信息。
    我上传了整个war,可以帮忙看看吗,多谢!地址:http://pan.baidu.com/share/link?shareid=260414&uk=1174716554
      

  5.   

    controller\MyController.class]; nested exception is java.lang.IncompatibleClassChangeError: class org.springframework.core.type.classreading.ClassMetadataReadingVisitor has interface org.springframework.asm.ClassVisitor as super class这个是冲突吗
      

  6.   

    缺少jar包或者jar包冲突导致的,你的war包中的lib文件下不可能只有spring的jar包,还有相关的辅助jar包呢。虽然你使用maven管理的依赖,但是我觉得你打war的过程中丢失了很多jar吧,可以看源工程下的jar和打出war包的jar是否一样?
      

  7.   

    我也不清楚其他那些辅助的JAR
      

  8.   

    maven去掉,单独测试下看是否报错。
      

  9.   

    参考:
    http://blog.csdn.net/sunitjy/article/details/6782431http://javacrazyer.iteye.com/blog/790834
      

  10.   


    我应该是少了一个org.springframework.web.servlet-3.1.4.RELEASE.jar。
    不知道为什么3.2.1中没有这个jar,我全部改为3.1.4,加载这个JAR,然后就成功了。
    现在问题是,这个jar在3.2中为何没有啊。
      

  11.   

    看下官方说明,应该和哪个jar包合并了吧
      

  12.   

    看样子应该是在spring-webmvc.jar,可是我也在3.2.1中加载该jar
    http://www.iteye.com/problems/9660
      

  13.   

    org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: file [C:\ItDevelop\Tomcat7\webapps\Spring-MVC-0.0.1-SNAPSHOT\WEB-INF\classes\controller\MyController.class]; nested exception is java.lang.IncompatibleClassChangeError: class org.springframework.core.type.classreading.ClassMetadataReadingVisitor has interface org.springframework.asm.ClassVisitor as super class这个root cause报错基本昭示了:spring所搜索到的class不符合其要求(虽然name没错,但其interface有问题),而这种问题多半是引入并使用了错误的jar包所致。
      

  14.   

    现在肯定是这个问题了。但是不知道为什么spring 3.2.1中导入spring-webmvc.jar却不行。改为用3.1.4用了org.springframework.web.servlet-3.1.4.RELEASE.jar就可以了。
      

  15.   

    关键找下这个类ClassMetadataReadingVisitor,在这两个jar包中的存在情况,再做下一步判断。