在 Eclipse 中尝试 Spring MVC 会抛出 java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet [重复]

问题描述 投票:0回答:6

请不要将此帖子标记为重复帖子,因为我在相关问题中没有找到任何好的资源。

使用的技术:- Spring MVC 4.3.3.RELEASE 摇篮3.1 雄猫9.0

我创建了一个动态 Web 项目,当我运行它时,出现以下错误

HTTP Status 500 - Error instantiating servlet class org.springframework.web.servlet.DispatcherServlet

type Exception report

message Error instantiating servlet class org.springframework.web.servlet.DispatcherServlet

description The server encountered an internal error that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Error instantiating servlet class org.springframework.web.servlet.DispatcherServlet
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:522)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
    org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:1102)
    org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:788)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1485)
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.lang.Thread.run(Thread.java:745)
root cause

java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1299)
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1133)
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:522)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
    org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:1102)
    org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:788)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1485)
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.lang.Thread.run(Thread.java:745)

据说它找不到调度程序Servlet类,但是当我

ctrl + click
中的调度程序Servlet路径时,它到达了Spring DispatcherServlet类。我无法找到这个问题的根本原因。

这是我的

spring-dispatcher-servlet

web.xml
文件

spring-dispatcher-servlet.xml


web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>MenuOrder</display-name>

  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

  <servlet>
    <servlet-name>spring-dispatcher</servlet-name>
    <servlet-class>
        org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>spring-dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

</web>


spring-dispatcher-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"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

    <bean id = "HandlerMapping" class = "org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

    <bean id = "viewResolver" 
        class = "org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name = "prefix">
            <value>/WEB-INF/</value>
        </property>

        <property name = "sufix">
            <value>.jsp</value>
        </property>
        </bean>

</beans>


enter image description here 我的

Project directory

文件


gradle.build

整个项目代码可以在 
https://github.com/viper-pranish/menu-order

项目结构内部的依赖关系

enter image description here

spring eclipse spring-mvc classnotfoundexception
6个回答
2
投票

1
投票

从 gradle.build 中删除

allprojects{ apply plugin: 'java' apply plugin: 'eclipse-wtp' group = 'com' version = '0.0.1-SNAPSHOT' } subprojects{ tasks.withType(JavaCompile){ options.encoding = 'UTF-8' } } allprojects { task hello { task -> println "I'm $task.project.name" } } allprojects{ repositories { mavenLocal() jcenter() mavenCentral() } dependencies { // The production code uses the SLF4J logging API at compile time // compile 'org.slf4j:slf4j-api:1.7.21' //spring web compile group: 'org.springframework', name: 'spring-webmvc', version: '4.3.3.RELEASE' // spring core compile group: 'org.springframework', name: 'spring-core', version: '4.3.3.RELEASE' // spring context support compile group: 'org.springframework', name: 'spring-context-support', version: '4.3.3.RELEASE' // ORM dependencies // spring jpa compile group: 'org.springframework.data', name: 'spring-data-jpa', version: '1.10.4.RELEASE' // hibernate-entity manager compile group: 'org.hibernate', name: 'hibernate-entitymanager', version: '5.2.2.Final' // End of ORM dependencies // postgres connector compile group: 'org.postgresql', name: 'postgresql', version: '9.4-1200-jdbc41' // Junit compile group: 'junit', name: 'junit', version: '4.12' // servlet compile group: 'javax.servlet', name: 'javax.servlet-api', version: '4.0.0-b01' compile group: 'javax.el', name: 'javax.el-api', version: '2.2.1' compile group: 'org.springframework', name: 'spring', version: '3.2.0.RC1' } }

并添加


compile group: 'org.springframework', name: 'spring', version: '3.2.0.RC1'

您也可以提供您的控制器 url 映射

apply plugin: 'war'



1
投票


0
投票


0
投票
    添加 slf4j 依赖项。问题将会解决。我的 pom.xml 依赖项解决了问题。
  1. 添加slf4j后如果问题没有解决,再在Deployment Assembly中添加Maven依赖。

-1
投票
version 10

切换到 Tomcat version 9 解决了我的问题。 Tomcat 9 与许多可能在新版本中遇到问题的应用程序提供了更好的兼容性。我建议进行此更改,看看它是否可以解决您项目中的问题。如果您遇到任何其他问题,请随时寻求额外帮助。

© www.soinside.com 2019 - 2024. All rights reserved.