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

22,359

Solution 1

you can simply add tag under tag of web.xml, It will work.

enter image description here

Solution 2

as @Denium pointed out you should not mix the spring versions

remove compile group: 'org.springframework', name: 'spring', version: '3.2.0.RC1' from gradle.build and add

apply plugin: 'war'

and you may to provide your controller url mapping as well

<bean name="/index"
            class="com.mkyong.common.controller.IndexController" />
Share:
22,359

Related videos on Youtube

viper
Author by

viper

Updated on July 09, 2022

Comments

  • viper
    viper almost 2 years

    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

    I created a dynamic web project and when I run it, I get the following error

    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. I could not get the root cause of this problem.

    Here are my web.xml and spring-dispatcher-servlet.xml files

    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

    enter image description here

    My gradle.build file

    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

    Dependencies inside the project structure

    enter image description here

    • kuhajeyan
      kuhajeyan over 7 years
      can you add your pom
    • Narrim
      Narrim over 7 years
      I was going to say either you havent added the required libraries to your war (show us the contents of WEB-INF/lib)
    • viper
      viper over 7 years
      @Narrim there is nothing inside lib folder
    • M. Deinum
      M. Deinum over 7 years
      For starter remove the org.springframework:spring dependency... You are mixing Spring Versions doing this, never mix versions of a framework. Next to that there is no such thing a spring-version so not sure which spring-core version you expect but that one simply doesn't exists. Your final error is the fact you are only applying the java plugin whereas you want a web application you need to add the war plugin as well.
    • viper
      viper over 7 years
      @M.Deinum I have added war and jetty plugin in my sub project's gradle file. And spring-version is a variable that I had set in gradle.properties file.
    • M. Deinum
      M. Deinum over 7 years
      What you had here wasn't going to work as you used a literal (single quotes not double quotes so it wouldn't be replaced). Which makes me wonder if this is the actual code you are using or a modified version. Long story short the dependencies simply isn't there that is what the exception is telling you. Next to that as stated in my previous comment you are mixing versions of a framework never do that.
    • viper
      viper over 7 years
      I can see the dependencies being listed in the project. I have update the post please refer to the last image in the post. And as you said I have removed spring dependency. But still I am having the same error.
  • viper
    viper over 7 years
    Did as you told but still I am having the same issue. Its not just this gradle project that is facing error. I created a maven project too and it also gave me the same error.
  • kuhajeyan
    kuhajeyan over 7 years
    @viper what do you see in the console stack trace
  • FelixSFD
    FelixSFD over 7 years
    Welcome to Stack Overflow! If you have code to share with us, please don't post it as image. You can add it to your post and format it as code.
  • Joel
    Joel over 5 years
    Welcome to SO, Tapan! Code-only answers are discouraged here, as they provide no insight into how the problem is solved. Please update your solution with an explanation of how your code solves the problem at hand.
  • Tapan
    Tapan over 5 years
    DispatcherServlet has import { import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory}; When DispactehrServlet class load its need log jar.if we check the statck trace of error AuthenticatorBase.class at line number 522 its start logging ,so its need a logging isnstance same for other one.
  • Tapan
    Tapan over 5 years
    After adding slf4j if the problem is not resolved, then add Maven Dependency in Deployment Assembly.