Как видно из заголовка, мои JSTL-теги не работают на моем сервере разработки, но работают на реальном сервере Google.
Я упростил код до голой кости, чтобы убедиться, что в коде нет ничего плохого, поэтому вот что у меня есть.
JSP
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" isELIgnored="false"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Page Title</title>
</head>
<body>
<c:choose>
<c:when test="${2+2==4}">sum works</c:when>
<c:otherwise>sum doesn't work</c:otherwise>
</c:choose>
</body>
Моя конфигурация выглядит следующим образом (что я считаю правильным и работает на сервере Google): я использую
- Eclipse IDE
- Servlet 2.5
- Нетjstl jar добавлен в WEB-INF \ lib
- tld нигде не добавлен
- Нет ссылки на taglib
на web.xml
Однако ятакже пробовал несколько комбинаций из следующих, и ни одна из них не работала:
- jstl-1.2.jar добавлен в путь сборки
- c.tld добавлен в WEB-INF
- ссылка на taglib добавлена в web.xml
Ошибка ниже:
HTTP ERROR 500
Problem accessing /index.html. Reason:
javax/servlet/jsp/tagext/TagSupport
Caused by:
java.lang.NoClassDefFoundError: javax/servlet/jsp/tagext/TagSupport
at java.lang.ClassLoader.findBootstrapClass(Native Method)
at java.lang.ClassLoader.findBootstrapClassOrNull(ClassLoader.java:927)
at java.lang.ClassLoader.loadClass(ClassLoader.java:298)
at com.google.appengine.tools.development.DevAppServerClassLoader.loadClass(DevAppServerClassLoader.java:87)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at com.google.appengine.tools.development.DevAppServerClassLoader.loadClass(DevAppServerClassLoader.java:87)
...
Как ни странно, <c:out value="${blah}"/>
работает как на сервере разработки, так и на удаленных серверах.другие основные теги не работают.Если я попытаюсь добавить теги fmt, они тоже не будут работать.
Есть идеи?