web-dev-qa-db-ja.com

Sun JSTL taglib宣言が「タグライブラリ記述子が見つかりません」で失敗する

JSPページを使用して値の配列を印刷しています。このためにJSTL <c:forEach>を使用しようとしています。

<c:forEach items="${objects}" var="object">
    <td>${object.name} </td>
</c:forEach>

問題は私のJSTL taglib宣言です:

 <%@ taglib prefix="c" uri="http://Java.Sun.com/jsp/jstl/core"%>

IDEは、この行にエラーを示しています

タグライブラリ記述子が見つかりません。

フォーラムの多くは、JSTLライブラリをダウンロードするために古いSunサイトを指しています。現在、これらのリンクはすべて、JSTLバイナリへのリンクのないOracleホームページをポイントしています。これは、これを達成するためのより新しいアプローチがあると私を信じさせています。

65
Atma

この問題を解決するには:

  1. jstl jarはクラスパスにある必要があります。 mavenを使用している場合は、提供されるスニペット here を使用して、pom.xmlのjstlに依存関係を追加します。 mavenを使用していない場合は、jstl jarを here からダウンロードして、WEB-INF/libにデプロイします。

  2. jspの先頭に次のtaglibディレクティブがあることを確認してください。

     <%@ taglib prefix="c" uri="http://Java.Sun.com/jsp/jstl/core"%>
    
92

適切なダウンロードリンクと非常に明確なインストール手順については、独自の JSTL wikiページ を確認してください。

質問を自分で付けた[jstl]タグの上にマウスを置き、ブラックボックスが表示されるまでinfoリンクをクリックします。

enter image description here

次に、JSTL 1.2(または1.2.1)へのダウンロードリンクが見つかるまで、JSTLバージョン情報まで少し下にスクロールします。

enter image description here

最後に、webappの/WEB-INF/libにそのファイルを正確にドロップします。

enter image description here

これにより、taglib宣言でエラーが発生してはならず、 JSTLタグと関数 が機能するはずです。

35
BalusC

私は自分の経験を共有したいだけです。 Mavenを使用したjstlについても同じ問題があります。 2つの依存関係を追加して解決しました。

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
    </dependency>
    <dependency>
        <groupId>jstl</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>
4
THIHA SOE

Tomcatサーバーを使用する場合は、JSTL .jarファイルをTomcat libフォルダーに配置することをお勧めします。これにより、すべてのWebプロジェクトのJSTLに自動的にアクセスできます(もちろん、.jspファイルのtaglib宣言を使用)。

2
pivopil

Apache Standard Taglib をダウンロードして、プロジェクトにjarを含めることができます。

これは、Mavenを使用していない人のための修正です。コアタグライブラリを機能させるには、standard.jarをlibフォルダーに追加する必要もあります。 jstlバージョン1.1で動作します。

<%@taglib prefix="core" uri="http://Java.Sun.com/jsp/jstl/core"%>
1
user2339071

私は同じ問題を抱えていましたenter image description here Spring Tool Suite 3.2およびjstlのバージョンを依存関係リストに追加するときにjstlを(1.1.2から)1.2に手動で変更すると、エラーが消えました。

0
davidqwk

Eclipse IDEを使用したMavenプロジェクトでこの問題が発生していました。プロジェクトのビルドパスで「順序とエクスポート」を変更し、Mavenの依存関係を最初に配置すると、エラーが消えました。これは、Eclipse IDEがMavenライブラリをロードする前に最初にアプリケーションソースをビルドしていたためだと思います。

0
Aris Capellos