Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java HTTP状态500-实例化servlet类org.springframework.web.servlet.DispatcherServlet时出错_Java_Spring_Jsp_Spring Mvc_Servlets - Fatal编程技术网

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

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

请不要将这篇文章标记为重复文章,因为我在相关问题中没有找到任何好的资源

使用的技术:- 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 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发布
  • 添加slf4j依赖项。这个问题会解决的。我的pom.xml依赖项解决了这个问题


  • 添加slf4j后,如果问题没有解决,则在部署程序集中添加Maven依赖项


  • 最有可能的是,必要的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依赖项。