Направих пролетна MVC webapp, в която използвах JSTL тагове. Пуснах го от Gradle и той работи перфектно:
gradle jettyRunWar
Въпреки това, когато използвах същия WAR файл с моя Tomcat, получих грешка:
Абсолютното uri: http://java.sun.com/jsp/jstl/core не може да бъде разрешен нито в web.xml, нито в jar файловете, разположени с това приложение.
Използвайки stackoverflow, успях да поправя. Проблемът беше в моя файл build.gradle, където не посочих JSTL зависимости.
Въпросът ми е защо Jetty е успяла да пусне това приложение, когато Tomcat не е бил. Как бих могъл да избегна този проблем?
Отговори:
1 за отговор № 1Използване на JSTL Taglibs
Библиотека със стандартни етикети на JavaServer Pages (JSTL
) е част от разпределението Jetty и автоматично се поставя върху classpath
когато изберете своя аромат JSP
, Той също така се включва автоматично в classpath
за пристанището на пристанището, което използва Apache JSP
двигател от пристан-9.2. Вграждане
Ако използвате пристанище в embedded
сценарий и трябва да използвате JSTL
, тогава трябва да се уверите, че JSTL бурканите са включени в контейнера classpath
- това е classpath
който е родител на webapp classpath
, Това е ограничение, което произтича от спецификацията Java EE.
Бурканчетата, които ще включите, ще зависят от аромата на JSP, който използвате.
Tomcat никога не е включвал JSTL
.
Трябва да сложите jstl
и стандартни буркани в WEB-INF/lib