【问题标题】:Jetty: Precompile JSPs using antJetty:使用 ant 预编译 JSP
【发布时间】:2014-04-05 04:46:33
【问题描述】:

我正在尝试使用 Jetty 预编译我的 JSP 文件,因此我不必为我的 Jetty 项目提供编译器。我正在使用Ant来实现这个,但是出现了错误,我不知道如何解决。

taglibs.jsp(4,62) PWC6188:绝对 uri: http://java.sun.com/jsp/jstl/core 无法在 web.xml 中解析 或使用此应用程序部署的 jar 文件

我正在使用另一个 StackOverflow 问题中提到的以下 ant 脚本: precompile jsps into classes for Jetty8 using 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>

什么可能出错并触发此错误?仔细检查类路径并加载所有必要的 .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}"/>

【问题讨论】:

    标签: jsp ant jetty precompile


    【解决方案1】:

    此错误的最常见原因是 Web 容器所具有的 jar 与您的 Web 应用程序的 WEB-INF/lib 所具有的 jar 冲突。

    Jetty 与您的项目之间的版本不匹配是此错误的最常见来源。

    使用 Jetty 8.x,您使用的是 Servlet API 3.0。

    确保您在 WEB-INF/lib 中使用以下版本

    • JSTL 1.2
    • EL 2.2
    • JSP 2.2
    • Servlet API 3.0

    【讨论】:

    • 更改了类路径,使其仅引用 WebContent/WEB-INF/lib 文件夹中的 .jar 文件。我检查了我正在使用的版本,它们确实与您的列表相匹配。还能是什么? generated_web.xml文件生成后不包含语法约束
    • 下载了您附加到您的答案link 的示例该示例运行良好,但是当我将 taglibs.jsp 文件复制到您的示例项目中时,会出现相同的错误。我在 lib 文件夹中包含了 Standard 和 JSTL jar。
    • 请将您的 taglibs.jsp 复制/粘贴到问题中。
    • taglibs.jsp 内容已添加到开头的帖子中。在示例项目中,我删除了对 Stripes 的引用。
    • 你还记得这篇文章吗? link 我可以得出结论,我不会使用 Ant 和 Taglibs 让它工作?
    【解决方案2】:

    无法结合 ANT 和 TagLibs 预编译 JSP 文件。 我决定从 ANT 迁移到 MAVEN,并且能够在 maven-jetty-jspc-plugin 的帮助下成功预编译文件 也可以在 maven 中运行部分 ANT 脚本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-18
      • 2016-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-14
      相关资源
      最近更新 更多