Я пишу веб-приложение, которое работает во встроенном Гагатовом экземпляре.
Когда я пытаюсь выполнить оператор JSTL, я получаю следующее исключение:
org.apache.jasper. JasperException:/index.jsp (1,63) PWC6188: абсолютный uri: http://java.sun.com/jsp/jstl/core не может быть разрешен или в web.xml или в файлах банки, развернутых с этим приложением
У меня есть следующее, раздражает путь к классу
Мой web.xml похож на это:
test
Мой код похож на это:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
Hello World!
<%= new java.util.Date() %>
${1+2}
Я запустил свой встроенный Гагатовый сервер как это:
Server server = new Server(80);
WebAppContext context = new WebAppContext("pig-1.0-SNAPSHOT.war","/");
server.addHandler(context);
server.start();
Я провел прошедшие два дня, экспериментируя с различными комбинациями файлов банки, конфигураций web.xml и объявлений библиотеки тегов, но напрасно.
Как я могу разбудить встроенный Гагатовый сервер и работающий с полной поддержкой JSTL?
Как и Марк Байерс сказал, что вы можете использовать Echo *
, чтобы получить список всех файлов в текущем каталоге.
Тест
или []
команда / встроенный вариант для проверки, если файл является каталогом.
Применить рекурсию, и вы закончите.
-121--2876619-
- JSTL-1.2.jar
- Standard-1.1.2.jar
Это сталкиваются. Удалить Standard-1.1.2.jar
. Вы должны использовать Standard-1.1.2.jar
только с JSTL-1.1.2.jar
. Поскольку JSTL 1.2 Стандартная банка была объединена в JSTL JAR, что приводит к одному файлу jstl-1.2.jar
.
В своем web.xml попробуйте изменить «h77p: //java.sun. com / xml / ns / j2ee / web-app_2_4.xsd ", чтобы начать с" http: // ", и посмотрите, устранит ли это ошибку.
Однако это может не быть основной причиной, так как у меня была та же ошибка при использовании jetty-maven-plugin и заголовка JSTL taglib в моем JSP:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
PWC6188: Абсолютный uri: http://java.sun.com/jsp/jstl/core нельзя разрешить ни в web.xml , ни в файлах jar, развернутых с этим приложением
Я использую готовый шаблон Spring MVC из SpringSource Tool Suite, поэтому не уверен, почему плагин Maven для Jetty подавляется им.
<build>
<plugins>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>maven2-repository.dev.java.net</id>
<name>Java.net Repository for Maven</name>
<url>http://download.java.net/maven/2/</url>
<layout>default</layout>
</repository>
</repositories>
И только javax.servlet: jstl: 1.2 указан в моих зависимостях POM, поскольку теперь он устарел taglibs: standard: 1.1.2, что было предложено выше.
Jetty 8.0, который по умолчанию запускается при использовании jetty:run, имеет API сервлетов 3.0. Начиная с этой версии, стандарт JSTL должен быть включен, и эти таглибы не могут быть в classpath webapp, только в стандартном classpath. Однако в версии 8.0.0.M0 их забыли включить.
Указание 7.1.4.v20100610 помогло мне.