2015-09-05 3 views
3

Это мой первый опыт работы с Spring, и я следую руководству PluralSight. Запустив первый пример, я столкнулся с ошибкой, указанной в заголовке. В моей консоли я получаю такие ошибки. Я использую более старые версии зависимостей для прохождения этого курса. Я внимательно следил за учебником, поэтому не уверен, что я что-то испортил или что-то устарело. Я использую http://localhost:8080/FitnessTracker/greeting.htmlHTTP Status 500 - Servlet.init() для сервлета fitTrackerServlet исключение

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"; 
    } 
} 

сервлет-config.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" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:mvc="http://www.springframework.org/schema/mvc" 
    xmlns:p="http://www.springframework.org/schema/p" 
    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd 
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd"> 

    <mvc:annotation-driven /> 
    <context:component-scan base-package="com.pluralsight.controller" /> 

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" 
    p:prefix="/WEB-INF/jsp/" p:suffix=".jsp"/> 

</beans> 

hello.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Insert title here</title> 
</head> 
<body> 
    <h1>${greeting}</h1> 
</body> 
</html> 

web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 
    <servlet> 
    <servlet-name>fitTrackerServlet</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/config/servlet-config.xml</param-value> 
    </init-param> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>fitTrackerServlet</servlet-name> 
    <url-pattern>*.html</url-pattern> 
    </servlet-mapping> 

    <display-name>Archetype Created Web Application</display-name> 
</web-app> 

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.pluralsight</groupId> 
    <artifactId>FitnessTracker</artifactId> 
    <packaging>war</packaging> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>FitnessTracker Maven Webapp</name> 
    <url>http://maven.apache.org</url> 
    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>3.2.0.RELEASE</version> 
    </dependency> 


    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
     <version>2.5</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.2</version> 
     <scope>provided</scope> 
    </dependency> 
    </dependencies> 
    <build> 
    <finalName>FitnessTracker</finalName> 
    </build> 
</project> 
+0

В вашем сервлет-config.xml попробуйте удалить эту строку xmlns: p = "http://www.springframework.org/schema/p" и check –

+0

Все, что вам нужно сделать, это убедиться, что среда выполнения вашего сервлет-контейнера - это Java 7. Подробнее см. [мой ответ] (https://stackoverflow.com/a/44530401/3395831). – Utku

ответ

7

У меня была та же проблема с тем же Pluralsight учебнике. У меня установлены как Java 1.7, так и Java 1.8. Проект, по-видимому, создает исключение с Java 1.8. Чтобы исправить эту ситуацию, вам необходимо убедиться, что среда Spring STS настроена на использование Java 1.7.

  1. Щелкните правой кнопкой мыши на проект и выберите пункт Свойства.
  2. В диалоговом окне Свойства, выберите Компилятор Java.
  3. В нижней части диалогового окна выберите ссылку для настройки Установленные JRE.
  4. Добавьте определение, чтобы указать на JRE 1.7 и выберите это значение по умолчанию.

Учебник PluralSight теперь работает для меня. Я новичок в Java и Spring MVC, поэтому я не уверен, что это лучший способ решить проблему.

1

Попробуйте 4.1.5. Меня устраивает.

<dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>4.1.5.RELEASE</version> 
</dependency> 
3

Ну, весна 3.2 нуждается в java 7 или ранее. Вместо изменения свойств проекта одно другое решение просто изменяет номер версии весеннего mvc в pom.xml на 4.2.4.RELEASE вместо 3.2.0.RELEASE, который вы использовали ранее. Теперь вы можете нормально работать с java 8.

Ниже я показываю весь pom.xml только с изменениями, о которых я говорил выше.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.pluralsight</groupId> 
    <artifactId>FitnessTracker</artifactId> 
    <packaging>war</packaging> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>FitnessTracker Maven Webapp</name> 
    <url>http://maven.apache.org</url> 
    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.2</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
     <version>2.5</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>4.2.4.RELEASE</version> 
    </dependency> 
    </dependencies> 
    <build> 
    <finalName>FitnessTracker</finalName> 
    </build> 
</project> 
+0

Это работает, я не хотел устанавливать Java 1.7 только для этого. –

0
<dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>3.2.3.RELEASE</version> 
    </dependency>   
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-jdbc</artifactId> 
     <version>3.2.3.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-orm</artifactId> 
     <version>3.2.3.RELEASE</version> 
    </dependency> 

Попробуйте использовать 3.2.3.RELEASE версию, где у вас есть весной на основе зависимостей

0

Я сталкивался с такой же проблемой. Итак, вам нужно использовать Tomcat v7.0, Это потому, что я использовал Tomcat v9.0, и он не работает с JRE7, но JRE8. Так

  • Установите приложение с Tomcat v7.0 и установить STS или Eclipse, путь сборки по умолчанию с JRE7.
  • Перезагрузите сервер Tomcat.
  • Перейдите в ваш браузер и вставьте вышеуказанную ссылку, и здесь вы Go !!! :)
0

Чтобы это исправить, просто изменить среду выполнения вашего сервлет-контейнера для Java 7. В Eclipse:

  1. Настройки -> Сервер -> Runtime Environments
  2. Выберите сервер, на которых выполняется project under и щелкните Редактировать ....
  3. В разделе JRE выберите Java 7 JRE. Обратите внимание, что для этого вам нужно сначала загрузить и установить Java 7, а сделать Java 7 JRE доступной в Eclipse. Чтобы сделать Java 7 JRE доступным в Eclipse:
    1. Загрузите Java 7 и установите его.
    2. В Eclipse выберите «Настройки» -> Java -> Установленные JRE и нажмите Поиск .... Если вы установили Java 7 в свой путь по умолчанию, Eclipse должен иметь возможность автоматически открывать Java 7.
    3. После добавления Java 7 в Eclipse вы можете выбрать JRE 7 в качестве среды выполнения вашего контейнера сервлета.

Я хотел бы также посоветовать с указанием среды выполнения используется в имени сервера. Например, в 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, а также. Вам просто нужно убедиться, что ваш контейнер сервлета работает под JRE 7.

Смежные вопросы