HTTP状态500 – servlet fitTrackerServlet的Servlet.init()引发exception

这是我第一次使用Spring,我正在关注PluralSight的教程。 运行第一个示例,我遇到标题中列出的错误。 在我的控制台中,我收到这样的错误。 我正在使用旧版本的依赖项来完成本课程。 我已经确保密切关注这个教程,所以不确定我是否搞砸了某个地方或某些东西被弃用了。 我正在使用http:// localhost:8080 / FitnessTracker / greeting.html

SEVERE: Context initialization failed java.lang.IllegalArgumentException SEVERE: StandardWrapper.Throwable java.lang.IllegalArgumentException SEVERE: Allocate exception for servlet fitTrackerServlet java.lang.IllegalArgumentException 

HelloController.java

 package com.pluralsight.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class HelloController { @RequestMapping(value = "/greeting") public String sayHello(Model model) { model.addAttribute("greeting", "Hello World"); return "hello"; } } 

的servlet-config.xml中

       

为hello.jsp

      Insert title here   

${greeting}

web.xml中

    fitTrackerServlet org.springframework.web.servlet.DispatcherServlet  contextConfigLocation /WEB-INF/config/servlet-config.xml    fitTrackerServlet *.html  Archetype Created Web Application  

的pom.xml

  4.0.0 com.pluralsight FitnessTracker war 0.0.1-SNAPSHOT FitnessTracker Maven Webapp http://maven.apache.org   junit junit 3.8.1 test   org.springframework spring-webmvc 3.2.0.RELEASE   javax.servlet servlet-api 2.5 provided   javax.servlet jstl 1.2 provided    FitnessTracker   

我在同一个PluralSight教程中遇到了同样的问题。 我安装了Java 1.7和Java 1.8。 该项目显然引发了Java 1.8的exception。 要纠正这种情况,您需要确保将Spring STS环境设置为使用Java 1.7。

  1. 右键单击项目,然后选择“ 属性”
  2. 在“ 属性”对话框中,选择“ Java编译器”
  3. 在对话框的底部,选择用于配置已安装JRE的链接。
  4. 添加定义以指向JRE 1.7并选择此作为默认值。

PluralSight教程现在适合我。 我自己是Java和Spring MVC的初学者,所以我不确定这是否是解决问题的最佳方法。

那么,spring 3.2需要java 7或更早版本。 另一个解决方案是将pom.xml中的spring mvc的版本号更改为4.2.4.RELEASE而不是之前使用的3.2.0.RELEASE,而不是更改项目属性。 现在,您可以正常使用java 8。

下面,我展示了整个pom.xml,只有我上面提到的更改。

  4.0.0 com.pluralsight FitnessTracker war 0.0.1-SNAPSHOT FitnessTracker Maven Webapp http://maven.apache.org   junit junit 3.8.1 test   javax.servlet jstl 1.2 provided   javax.servlet servlet-api 2.5 provided   org.springframework spring-webmvc 4.2.4.RELEASE    FitnessTracker   

试试4.1.5。 这个对我有用。

  org.springframework spring-webmvc 4.1.5.RELEASE  
   org.springframework spring-webmvc 3.2.3.RELEASE   org.springframework spring-jdbc 3.2.3.RELEASE   org.springframework spring-orm 3.2.3.RELEASE  

尝试使用3.2.3.RELEASE版本,只要你有基于spring的依赖

我遇到了同样的问题。 所以你要做的就是使用Tomcat v7.0,因为我使用的是Tomcat v9.0,它不适用于JRE7而是JRE8 。 所以

  • 使用Tomcat v7.0设置应用程序,并使用JRE7设置STS或Eclipse默认构建路径。
  • 重新启动Tomcat服务器。
  • 转到您的浏览器并粘贴上面的链接,在这里你去! 🙂

要解决此问题,只需将servlet容器的运行时环境更改为Java 7.在Eclipse中:

  1. 首选项 – >服务器 – >运行时环境
  2. 选择您正在运行项目的服务器,然后单击编辑....
  3. JRE部分,选择Java 7 JRE。 请注意,为了能够执行此操作,首先需要下载并安装Java 7,并在Eclipse中提供Java 7 JRE。 要在Eclipse中使Java 7 JRE可用:
    1. 下载Java 7并安装它。
    2. 在Eclipse中,选择Preferences – > Java – > Installed JREs,然后单击Search .... 如果已将Java 7安装到其默认路径,则Eclipse应该能够自动发现Java 7。
    3. 将Java 7添加到Eclipse后,可以选择JRE 7作为servlet容器的运行时环境。

我还建议指出服务器名称中使用的运行时环境。 例如,在Eclipse中,不要让服务器名称只是“Apache Tomcat v7.0”,而是将其设为“Apache Tomcat v7.0 – JRE 7”。 当然,如果稍后更改此服务器的运行时环境,则应更新此名称。

资料来源: http : //www.codejava.net/ides/eclipse/how-to-change-java-runtime-environment-for-tomcat-in-eclipse

注意:此答案也适用于任何其他IDE。 您只需要确保您的servlet容器在JRE 7下运行。