HTTP Status 500 - Error instantiating servlet class org.springframework.web.servlet.DispatcherServlet
Solution 1
you can simply add tag under tag of web.xml, It will work.
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" />
Related videos on Youtube
viper
Updated on July 09, 2022Comments
-
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 thespring-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
andspring-dispatcher-servlet.xml
filesweb.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
fileallprojects{ 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
-
kuhajeyan over 7 yearscan you add your pom
-
Narrim over 7 yearsI was going to say either you havent added the required libraries to your war (show us the contents of WEB-INF/lib)
-
viper over 7 years@Narrim there is nothing inside
lib
folder -
M. Deinum over 7 yearsFor 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 aspring-version
so not sure whichspring-core
version you expect but that one simply doesn't exists. Your final error is the fact you are only applying thejava
plugin whereas you want a web application you need to add thewar
plugin as well. -
viper over 7 years@M.Deinum I have added
war
andjetty
plugin in my sub project's gradle file. Andspring-version
is a variable that I had set ingradle.properties
file. -
M. Deinum over 7 yearsWhat 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 over 7 yearsI 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 over 7 yearsDid 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 over 7 years@viper what do you see in the console stack trace
-
FelixSFD over 7 yearsWelcome 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 over 5 yearsWelcome 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 over 5 yearsDispatcherServlet 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 over 5 yearsAfter adding slf4j if the problem is not resolved, then add Maven Dependency in Deployment Assembly.