HTTP状态500 - 实例化servlet类org.springframework.web.servlet.DispatcherServlet时出错 [英] HTTP Status 500 - Error instantiating servlet class org.springframework.web.servlet.DispatcherServlet
问题描述
请不要将此帖标记为重复,因为我在相关问题中找不到任何好的资源。
使用的技术: -
Spring MVC 4.3.3.RELEASE
Gradle 3.1
Tomcat 9.0
我创建了一个动态Web项目,当我运行它时,我得到了以下错误
HTTP状态500 - 实例化servlet类时出错org.springframework.web.servlet.DispatcherServlet
类型异常报告
消息实例化servlet类时出错org.springframework.web.servlet.DispatcherServlet
说明服务器遇到内部错误,导致无法完成此请求。
exception
javax.servlet.ServletException:实例化servlet类时出错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.Thre adPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)
org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61)
java.lang.Thread.run( Thread.java:745)
根本原因
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.AbstractProcess orLight.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
spring-dispatcher-servlet
中的调度程序servlet路径,它将转到spring Dispatcher Servlet类。我无法解决这个问题的根本原因。
这是我的 web.xml
和 spring-dispatcher-servlet.xml
files
web.xml
<?xml version =1.0encoding =UTF-8?>
< web-app xmlns:xsi =http://www.w3.org/2001/XMLSchema-instancexmlns =http://xmlns.jcp.org/xml/ns/javaeexsi :schemaLocation =http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsdid =WebApp_IDversion =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.0encoding =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 =HandlerMappingclass =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>
项目目录
我的 gradle.build
file
allprojects {
apply plugin:'java'
apply plugin:'eclipse-wtp '
group ='com'
version ='0.0.1-SNAPSHOT'
}
子项目{
tasks.withType(JavaCompile){
options.encoding ='UTF-8'
}
}
allprojects {
task hello {task - > ; println我是$ task.project.name}
}
allprojects {
repositories {
mavenLocal()
jcenter()
mavenCentral()
}
dependencies {
//生产代码使用编译时的SLF4J日志API
// compile'org.slf4j:slf4j-api:1.7.21'
// spring web
编译组: 'org.springframework',名称:'spring-webmvc',版本:'4.3.3.RELEASE'
// spring core
编译组:'org.springframework',名称: 'spring-core',版本:'4.3.3.RELEASE'
//弹簧上下文支持
编译组:'org.springframework',名称:'spring-context-support' ,版本:'4.3.3.RELEASE'
// ORM依赖项
// spring jpa
编译组:'org.springframework。 data',name:'spring-data-jpa',version:'1.10.4.RE LEASE'
// hibernate-entity manager
编译组:'org.hibernate',名称:'hibernate-entitymanager',版本:'5.2.2.Final'
// ORM依赖项结束
// postgres连接器
编译组:'org.postgresql',名称:'postgresql',版本:'9.4-1200-jdbc41'
// Junit
编译组:'junit',名称:'junit',版本:'4.12'
// servlet
编译组:'javax.servlet',名称:'javax.servlet-api',版本:'4.0.0-b01'
编译组:'javax.el',名称:'javax.el- api',版本:'2.2.1'
编译组:'org.springframework',名称:'spring',版本:'3.2.0.RC1'
}
}
整个项目代码可以在
您只需在web.xml标记下添加标记即可工作。
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
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
you can simply add tag under tag of web.xml, It will work.
这篇关于HTTP状态500 - 实例化servlet类org.springframework.web.servlet.DispatcherServlet时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!