1. ホーム
  2. java

[解決済み] "http://java.sun.com/jsp/jstl/core "のタグライブラリ記述子が見つかりません。

2022-02-26 07:43:14

質問

JSPページの一番上にこれを入れました。

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

すでに、JSTL の JAR ファイルを WEB-INF/lib ディレクトリに移動します。しかし、それでもJSPはtaglibを解決することができません。以下のようなエラーが発生します。

のタグライブラリ記述子が見つかりません。 http://java.sun.com/jsp/jstl/core "

私はEclipse Junoを使用しており、プロジェクトの構成は以下の通りです。

解決方法は?

<ブロッククオート

"http://java.sun.com/jsp/jstl/core "のタグライブラリ記述子が見当たりません。

ベースは 前の質問 この場合、JSTL 1.2が必要です。しかし、あなたはそこに jstl.jar ファイルには、JSTL 1.2には明らかにバージョン番号が含まれているのに、次のように jstl-1.2.jar . 単独のファイル名 jstl.jar は、JSTL 1.0 および 1.1 の典型的な例です。このバージョンでは standard.jar に沿って /WEB-INF/lib には、必要な TLD ファイルが含まれています。しかし、あなたの特定のケースでは standard.jar には明らかに欠けています。 /WEB-INF/lib であり、それこそがタグリブのURIを解決できなかった理由です。

これを解決するには、間違った JAR ファイルを削除する必要があります。 jstl-1.2.jar を丸ごと /WEB-INF/lib . これだけです。展開する必要はありませんし、プロジェクトの ビルドパス .

その緩いのを削除するのを忘れないでください c.tld ファイルもあります。これは絶対にそこにあるべきものではありません。これは、インターネット上の下手なチュートリアルや回答で、確かに指示されています。これは大きな誤解と設定ミスによる神話です。クラスパスに緩いJSTL TLDファイルを置く必要はありませんし、以前のJSTLバージョンでもそうでした。

Mavenを使用している場合は、以下の座標を使用してください。

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>

また web.xml はconformと宣言されています。 少なくとも Servlet 2.4、つまりServlet 2.3以前のバージョンではありません。さもなければ、JSTLタグの中のEL式が動作しなくなります。あなたのターゲット・コンテナにマッチする最も高いバージョンを選択し、その中で <!DOCTYPE> を指定します。 web.xml . 以下は、Servlet 3.0 (Tomcat 7) 互換の例です。

<?xml version="1.0" encoding="UTF-8"?>
<web-app
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">

    <!-- Config here. -->

</web-app>

###参照