Java HTTP状态500-实例化servlet类org.springframework.web.servlet.DispatcherServlet时出错
请不要将这篇文章标记为重复文章,因为我在相关问题中没有找到任何好的资源 使用的技术:- Spring MVC 4.3.3.1版本 格拉德尔3.1 Tomcat 9.0 我创建了一个动态web项目,当我运行它时,我得到以下错误Java HTTP状态500-实例化servlet类org.springframework.web.servlet.DispatcherServlet时出错,java,spring,jsp,spring-mvc,servlets,Java,Spring,Jsp,Spring Mvc,Servlets,请不要将这篇文章标记为重复文章,因为我在相关问题中没有找到任何好的资源 使用的技术:- Spring MVC 4.3.3.1版本 格拉德尔3.1 Tomcat 9.0 我创建了一个动态web项目,当我运行它时,我得到以下错误 HTTP Status 500 - Error instantiating servlet class org.springframework.web.servlet.DispatcherServlet type Exception report message Err
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)
这意味着它找不到DispatcherServlet类,但当我在SpringDispatcherServlet
中单击DispatcherServlet路径时,它会到达SpringDispatcherServlet类。我无法找到这个问题的根本原因
下面是我的web.xml
和spring dispatcherservlet.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>
<?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>
项目目录
我的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'
}
}
整个项目代码可在中找到
项目结构内部的依赖关系
正如@Denium指出的,您不应该混合使用spring版本 从gradle.build中删除编译组:'org.springframework',名称:'spring',版本:'3.2.0.RC1' 加
apply plugin: 'war'
您可能还需要提供控制器url映射
<bean name="/index"
class="com.mkyong.common.controller.IndexController" />
您只需在web.xml的标签下添加标签,就可以了
确保在两个位置都添加了所有必需的弹簧罐: 内置路径以及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>
org.springframework
SpringWebMVC
4.1.7.1发布
公用记录
公用记录
javax.servlet
jstl
1.2
朱尼特
朱尼特
4.12
org.slf4j
jcl-over-slf4j
1.7.12
org.springframework.security
spring安全网
4.0.2.1发布
org.springframework.security
spring安全配置
4.0.2.1发布
org.springframework.security
spring安全标记库
4.0.2.1发布
org.springframework
弹簧网
4.1.7.1发布
最有可能的是,必要的SpringMVC相关jar文件没有在tomcat启动时加载和部署。但请注意:这些文件位于类路径中,因此在开发期间Eclipse IDE中不会出现任何错误。仅在运行时发生。 要解决此问题,请执行以下操作:- 1) 右键单击项目 2) 点击属性 3) 单击部署程序集选项卡 4) 单击添加 5) 单击Java构建路径条目 6) 单击Maven依赖项 7) 单击“完成” 8) 将Spring MVC应用程序重新部署到Tomcat
9) 重新启动Tomcat你能添加你的POM吗?我想说的是你没有向war中添加所需的库(向我们展示WEB-INF/lib的内容)@Narrim
lib
folderFor starter删除org.springframework:spring
依赖项。。。要做到这一点,您需要混合Spring版本,千万不要混合框架的版本。除此之外,还没有spring版本
,因此不确定您期望的是哪个spring核心
版本,但该版本根本不存在。最后一个错误是,您只应用了java
插件,而您需要一个web应用程序,您还需要添加war
插件。@M.Deinum我在子项目的gradle文件中添加了war
和jetty
插件。而spring版本
是我在gradle.properties
文件中设置的一个变量。按照您所说的做了,但我仍然有同样的问题。面临错误的不仅仅是这个gradle项目。我也创建了一个maven项目,它也给了我同样的错误。@viper您在控制台堆栈TraceWeblcome to stack Overflow中看到了什么!如果您有代码与我们共享,请不要将其作为图片发布。您可以将其添加到您的帖子和。欢迎来到SO,Tapan!这里不鼓励只使用代码的答案,因为它们无法提供问题如何解决的见解。请更新您的解决方案,解释您的代码如何解决手头的问题。DispatcherServlet具有import{import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory};当DispactehrServlet类加载其需要日志jar时。如果我们在第522行检查error AuthenticatorBase.class的statck跟踪,那么它的开始日志记录,因此它需要的日志记录与另一个日志记录相同。添加slf4j后,如果问题未得到解决,则在部署程序集中添加Maven依赖项。