简体   繁体   English

HTTP 状态 500 - 实例化 servlet 类 org.springframework.web.servlet.DispatcherServlet 时出错

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

Please don't flag this post as a duplicate one because I didn't find any good resource in the relevant question.请不要将此帖子标记为重复,因为我在相关问题中没有找到任何好的资源。

Technologies used :- Spring MVC 4.3.3.RELEASE Gradle 3.1 Tomcat 9.0使用的技术:- Spring MVC 4.3.3.RELEASE Gradle 3.1 Tomcat 9.0

I created a dynamic web project and when I run it, I get the following error我创建了一个动态 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)

It is saying that it could not find the dispatcher servlet class but when I ctrl + click the dispatcher servlet path in the spring-dispatcher-servlet , It lands to the spring Dispatcher Servlet class.据说它找不到调度程序 servlet 类,但是当我ctrl + click spring-dispatcher-servlet的调度程序 servlet 路径时,它会到达 spring Dispatcher Servlet 类。 I could not get the root cause of this problem.我无法找到这个问题的根本原因。

Here are my web.xml and spring-dispatcher-servlet.xml files这是我的web.xmlspring-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>

Project directory

在此处输入图片说明

My gradle.build file我的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'

        }
        }

The whole project code can be found in https://github.com/viper-pranish/menu-order整个项目代码可以在https://github.com/viper-pranish/menu-order找到

Dependencies inside the project structure项目结构内的依赖关系

在此处输入图片说明

you can simply add tag under tag of web.xml, It will work.你可以简单地在 web.xml 的标签下添加标签,它会起作用。

在此处输入图片说明

as @Denium pointed out you should not mix the spring versions正如@Denium 指出的,你不应该混合使用 spring 版本

remove compile group: 'org.springframework', name: 'spring', version: '3.2.0.RC1' from gradle.build and add从 gradle.build 中删除compile group: 'org.springframework', name: 'spring', version: '3.2.0.RC1'并添加

apply plugin: 'war'

and you may to provide your controller url mapping as well你也可以提供你的控制器 url 映射

<bean name="/index"
            class="com.mkyong.common.controller.IndexController" />

确保您已在两个位置添加了所有必需的 Spring jar:在构建路径以及 WEB-INF/lib 文件夹中

<dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>4.1.7.RELEASE</version>
            <exclusions>
                <exclusion>
                    <artifactId>commons-logging</artifactId>
                    <groupId>commons-logging</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>


        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jcl-over-slf4j</artifactId>
            <version>1.7.12</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-web</artifactId>
            <version>4.0.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-config</artifactId>
            <version>4.0.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-taglibs</artifactId>
            <version>4.0.2.RELEASE</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-web -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>4.1.7.RELEASE</version>
        </dependency>

    </dependencies>
  1. Add slf4j dependencies.添加 slf4j 依赖项。 The problem will resolve.问题将得到解决。 My pom.xml dependencies it resolved the problem.我的 pom.xml 依赖项解决了这个问题。

  2. After adding slf4j if the problem is not resolved, then add Maven Dependency in Deployment Assembly.添加slf4j后如果问题没有解决,再在Deployment Assembly中添加Maven Dependency。

Most probably the necessary Spring MVC related jar files are not loaded and deployed on tomcat startup.很可能在 tomcat 启动时没有加载和部署必要的 Spring MVC 相关 jar 文件。 But note: these files are in your classpath and hence you are not getting any error in Eclipse IDE during development time.但请注意:这些文件位于您的类路径中,因此您在开发期间不会在 Eclipse IDE 中收到任何错误。 Happens only during runtime.仅在运行时发生。 to fix this:- 1)Right-click on project 2)Click on Properties 3)Click on Deployment Assembly Tab 4)Click Add 5)Click on Java Build Path Entries 6)Click on Maven Dependencies 7)Click Finish 8)Redeploy Spring MVC application to Tomcat again 9)Restart Tomcat解决这个问题:- 1)右键单击项目 2)单击属性 3)单击部署程序集选项卡 4)单击添加 5)单击 Java 构建路径条目 6)单击 Maven 依赖项 7)单击完成 8)重新部署 Spring MVC 再次应用到 Tomcat 9)重启 Tomcat

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 实例化servlet类org.springframework.web.servlet.DispatcherServlet时出错 - Error instantiating servlet class org.springframework.web.servlet.Dispatcherservlet 错误[org.springframework.web.servlet.DispatcherServlet] - ERROR [org.springframework.web.servlet.DispatcherServlet] HTTP状态500-实例化servlet类org.springframeworks.web.servlet.DispatcherServlet时出错 - HTTP Status 500 - Error instantiating servlet class org.springframeworks.web.servlet.DispatcherServlet 找不到org.springframework.web.servlet.DispatcherServlet - org.springframework.web.servlet.DispatcherServlet Not Found org.springframework.web.servlet.DispatcherServlet noHandlerFound - org.springframework.web.servlet.DispatcherServlet noHandlerFound org.springframework.web.servlet.DispatcherServlet class 未找到 - org.springframework.web.servlet.DispatcherServlet class not found CNF org.springframework.web.servlet.DispatcherServlet - CNF org.springframework.web.servlet.DispatcherServlet org.springframework.web.servlet.DispatcherServlet noHandlerFound 404错误响应 - org.springframework.web.servlet.DispatcherServlet noHandlerFound 404 error response 错误 org.springframework.web.servlet.DispatcherServlet - 上下文初始化失败 - ERROR org.springframework.web.servlet.DispatcherServlet - Context initialization failed org.springframework.web.servlet.DispatcherServlet noHandlerFound WARNING: No mapping found for HTTP request with URI in DispatcherServlet with name - org.springframework.web.servlet.DispatcherServlet noHandlerFound WARNING: No mapping found for HTTP request with URI in DispatcherServlet with name
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM