0

JSP ファイルを Jetty でプリコンパイルしようとしているので、Jetty プロジェクトにコンパイラを同梱する必要はありません。これを実現するために Ant を使用していますが、エラーが表示され、解決方法がわかりません。

taglibs.jsp(4,62) PWC6188: 絶対 uri: http://java.sun.com/jsp/jstl/coreは、web.xml またはこのアプリケーションでデプロイされた jar ファイルで解決できません

別の StackOverflow の質問に記載されているように、次の 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 バージョンとは関係ありません。

よろしく、 user2255297

更新: 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}"/>
4

2 に答える 2

1

このエラーの最も一般的な原因は、Web コンテナーにあるものと Web アプリケーションにあるものとの間で jar が競合していることWEB-INF/libです。

Jetty とプロジェクトの間でバージョンが一致していないことが、このエラーの最も一般的な原因です。

Jetty 8.x では、Servlet API 3.0 を使用しています。

で次のバージョンを使用していることを確認してください。WEB-INF/lib

  • JSTL1.2
  • EL 2.2
  • JSP2.2
  • サーブレット API 3.0
于 2013-04-08T14:18:40.810 に答える