Jetty: прекомпилируйте JSP с помощью ant

Я пытаюсь предварительно скомпилировать мои файлы JSP с помощью Jetty, поэтому мне не нужно поставлять компилятор с моим проектом Jetty. Я использую Ant для достижения этой цели, но появляется ошибка, и я не знаю, как ее решить.

taglibs.jsp (4,62) PWC6188: абсолютный uri: http://java.sun.com/jsp/jstl/core не может быть разрешен ни в файле web.xml, ни в файлах jar, развернутых с помощью этого приложения

Я использую следующий скрипт ant, как упомянуто в другом вопросе Stackru: прекомпилируйте jsps в классы для Jetty8, используя ant

<property name="jetty.home" value="C:/jetty-distribution-8.1.8.v20121106" />     
<path id="compile.jspc">
     <fileset dir="${jetty.home}">
          <include name="lib/servlet-api-*.jar" />
          <include name="lib/jsp/*.jar" />
     </fileset>
</path>
<target name="jspc" depends="compile">
    <taskdef classname="org.apache.jasper.JspC" name="jasper2" classpathref="compile.jspc" />
    <jasper2 validateXml="false"
        uriroot="WebContent"
        addWebXmlMappings="true"
        webXmlFragment="WebContent/WEB-INF/generated_web.xml"
        compilerSourceVM="1.6"
        compilerTargetVM="1.6"
        outputDir="build/gen-src"
        verbose="9" />
</target>

Что может пойти не так и вызвать эту ошибку? Дважды проверил classpath и все необходимые файлы.jar загружены. Не имеет ничего общего с версией JSTL, упомянутой в других сообщениях на форуме.

С наилучшими пожеланиями, пользователь2255297

ОБНОВЛЕНИЕ: содержание Taglibs.jsp

<%@ taglib prefix="stripes" uri="http://stripes.sourceforge.net/stripes.tld" %>
<%@ taglib prefix="stripesDynamic" uri="http://stripes.sourceforge.net/stripes-dynattr.tld" %>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

<%-- Short hand for the context root. --%>
<c:set var="ctx" value="${pageContext.request.contextPath}"/>

2 ответа

Решение

Прекомпиляция файлов JSP в сочетании с ANT и TagLibs была невозможна. Я решил перейти с ANT на MAVEN и смог успешно прекомпилировать файлы с помощью maven-jetty-jspc-plugin. Также есть возможность запускать части скрипта ANT в maven.

Наиболее распространенная причина этой ошибки - конфликтующие файлы, которые есть у веб-контейнера и у вашего веб-приложения. WEB-INF/lib есть.

Несоответствие версий между Jetty и вашим проектом является наиболее распространенным источником этой ошибки.

С Jetty 8.x вы используете Servlet API 3.0.

Убедитесь, что вы используете следующие версии в вашем WEB-INF/lib

  • JSTL 1.2
  • EL 2.2
  • JSP 2.2
  • Сервлет API 3.0
Другие вопросы по тегам