Исключение Spring Web Services Class Not Found

Я просматриваю этот онлайн-учебник Spring на сайте springsource.org.

http://static.springsource.org/docs/Spring-MVC-step-by-step/part2.html

В конце главы 2 вы добавляете bean-компонент к префиксу и суффиксу /WEB-INF/jsp/ и .jsp к ответам.

Код до сих пор должен в основном загружать index.jsp, когда вы переходите на localhost: 8080/springapp/, который будет перенаправлять на localhost: 8080/springapp/hello.htm, который создает экземпляр HelloController, который теоретически должен отправить вас на /WEB -INF/jsp/hello.jsp. Когда я добавил bean-компонент префикса/суффикса и изменил все свои ссылки на просто «привет» вместо файла jsp с полным путем, я начал получать следующую ошибку:

message Handler processing failed; nested exception is 
java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/fmt/LocalizationContext

Я несколько раз пытался вернуться к примерам и проверить наличие опечаток, но до сих пор не могу найти проблему. Любые советы или указатели?

index.jsp (в корне веб-приложения:

<%@ include file="/WEB-INF/jsp/include.jsp" %>

<%-- Redirected because we can't set the welcome page to a virtual URL. --%>
<c:redirect url="/hello.htm" />

HelloController.java (без импорта и пакета:

public class HelloController implements Controller {

protected final Log logger = LogFactory.getLog(getClass());

    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

        String now = (new Date()).toString();
        logger.info("Returning hello view with " + now);

        return new ModelAndView("hello", "now", now);
    }
}

Мой файл hello.jsp:

<%@ include file="/WEB-INF/jsp/include.jsp" %>

<!DOCTYPE html>
<html>
    <head>
        <title>Hello :: Spring Application</title>
    </head>
    <body>
        <h1>Hello - Spring Application</h1>
        <p>Greetings, it is now <c:out value="${now}" /></p>
    </body>
</html>

person Kyle    schedule 19.03.2013    source источник


Ответы (3)


Кажется, вам здесь не хватает JSTL jar. Попробуйте загрузить его и поместите в путь к классам, чтобы проверить, работает ли он: Где я могу скачать JSTL баночка

person limc    schedule 19.03.2013
comment
Спасибо, в учебнике сказано добавить jstl.jar и standard.jar. Я, должно быть, пропустил первую часть предложения, так как у меня был только стандартный .jar... Большое спасибо! - person Kyle; 19.03.2013
comment
Нет проблем... в будущем, если вы увидите исключение java.lang.NoClassDefFoundError, скорее всего, вам не хватает некоторых банок. Просто поищите банки в Google и добавьте их в путь к классам. - person limc; 19.03.2013

Кажется, что в пути к классам отсутствуют определенные необходимые банки. Убедитесь, что у вас есть servlet-api-2.x.jar jsp-api-2.x.jar и jstl-1.x.jar в пути к классам.

person spiritwalker    schedule 19.03.2013

Убедитесь, что файл jstl.jar находится в папке WEB-INF/lib.

На самом деле, вот что указано в учебнике, который вы связали. Я думаю, вы пропустили этот шаг:

Мы будем использовать стандартную библиотеку тегов JSP (JSTL), поэтому давайте начнем с копирования необходимых файлов JSTL в наш каталог «WEB-INF/lib». Скопируйте jstl.jar из каталога «spring-framework-2.5/lib/j2ee» и standard.jar из каталога «spring-framework-2.5/lib/jakarta-taglibs» в «springapp/war/WEB-INF/lib». ' каталог.

person Lan    schedule 19.03.2013