61

Ant で問題なくビルドされ、JBoss に完全にデプロイされ、問題なく実行される Java EE プロジェクトがあります。このプロジェクトには、いくつかのカスタムタグ ライブラリ ( JSTLではありません!) が含まれていますが、これらも問題なく動作しています。

問題は Eclipse IDE (Ganymede) にあります。カスタム タグを使用するすべての JSP ファイルで、JSP パーサーは taglib の include 行に次のエラーでフラグを立てます。

Cannot find the tag library descriptor for (example).tld

これにより、タブ ライブラリを使用するたびにエラーとしてフラグが立てられ、IDE にはその定義がないため、タグ パラメータなどをチェックできません。

私たちの完璧に機能する JSP ファイルは赤いエラーの海であり、私の目は燃え始めています。

Eclipse に「探しているタグ ライブラリ記述子は "src/web/WEB-INF/(example)-taglib/(example).tld" です」と単純に伝えるにはどうすればよいでしょうか?

私はすでに Eclipse サポート フォーラムでこの質問をしましたが、役に立つ結果はありませんでした。

4

22 に答える 22

28

Eclipse Helios では、プロジェクト プロパティの「Java EE Module Dependencies」が「Deployment Assembly」に置き換えられました。

したがって、Eclipse Heliosでこの問題を解決するために、私が行った方法は次のとおりです。

  • パッケージ エクスプローラーでプロジェクトを右クリックし、[インポート...] を選択します。
  • デフォルトの選択「ファイルシステム」を受け入れ、「次へ」を押します
  • Fromディレクトリ行で「Browse」を押し、Tomcatのインストールに移動し、ファイルwebapps/examples/WEB-INF/libを見つけます(Tomcat 6を使用していますが、Tomcatの他のバージョンのパスはwebapps/jsp-examples/WEB- INF/lib)。パスに入ったら、[OK] を押します。
  • jstl.jar と standard.jar の横をクリックして、チェック ボックスをアクティブにします。
  • Into folder の行で Browse をクリックし、ライブラリ フォルダを選択します。プロジェクト内で /lib を使用します。
  • 「完了」をクリック
  • パッケージ エクスプローラー ビューでプロジェクトを右クリックし、プロパティを選択します (または Alt + Enter を押します)。
  • 「Java ビルド パス」をクリックします。
  • 「Jar を追加」をクリックし、プロジェクト、フォルダ lib をクリックし、jstl.jar を選択し、OK を押します。
  • [Jar を追加] をクリックし、プロジェクトの lib フォルダーをクリックして、standard.jar を選択し、[OK] を押します。
  • [OK] を押してプロパティ ダイアログを閉じます
  • 「問題」ビューをクリックし、「Classpath entry .../jstl.jar will not be export or published. Runtime ClassNotFoundExceptions may result.」というメッセージを選択します。
  • それを右クリックして、「クイック修正」を選択します。
  • デフォルトの「関連する未加工のクラスパス エントリをパブリッシュ/エクスポートの依存関係としてマークする」を受け入れ、[完了] をクリックします。
  • standard.jar についても同じことを行います

これで問題は解決しますが、「Deployment Assembly」で何が起こったのかを確認したい場合は、プロジェクトのプロパティを再度開き、「Deployment Assembly」を選択すると、standard.jar と jstl.jar が WEB- に追加されていることがわかります。 INF/lib フォルダー。

于 2011-01-20T06:34:38.760 に答える
19

これは私の問題であり、どのように修正したか...

誰もが上で言及したことなどをすべて実行しましたが、まだこのエラーが発生していました。URI の と を使用していたことがわかりましたがhttp://java.sun.com/jsp/jstl/fmthttp://java.sun.com/jsp/jstl/coreどちらが間違っていましたか。

URI を上記から次のように切り替えてみてください。

http://java.sun.com/jstl/fmt
http://java.sun.com/jstl/core

また、クラスパスで参照されている正しい jar があることを確認してください。

于 2010-11-01T21:33:50.100 に答える
14

ストライプ taglib uri が見つからないと表示されるという同じ問題がありました。私は Indigo と Maven を使用していましたが、[Properties] -> [Java Build Path] -> [Order & Export] タブをチェックすると、(新しいプロジェクトのチェックアウトで)何らかの理由で [Maven Dependencies] チェックボックスがオフになっていることがわかりました。そのボックスをチェックしてMavenのクリーンインストールを実行するだけで、すべてのエラーが解消されました.

ビルド パスに Maven の依存関係が必要であると Eclipse が想定しないのはなぜだろうか...

于 2011-11-23T10:57:34.433 に答える
10

その原因は、このプロジェクトが実際には Java EE プロジェクトであると Eclipse によってまったく見なされていなかったことであることが判明しました。これは 3.1 からの古いプロジェクトであり、現在使用している Eclipse 3.5 では、プロジェクト構成ファイルにいくつかの「性質」を設定する必要があります。

<natures>
    <nature>org.eclipse.jdt.core.javanature</nature>
    <nature>InCode.inCodeNature</nature>
    <nature>org.eclipse.dltk.javascript.core.nature</nature>
    <nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
    <nature>org.eclipse.wst.jsdt.core.jsNature</nature>
    <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
    <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
    <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
</natures>

JSPファイルを適切に読み取る新しい「動的Webプロジェクト」を作成し、古いプロジェクトの構成と比較することで、原因を見つけることができました。

これらを追加する唯一の方法は、.project ファイルを編集することでしたが、プロジェクトを再度開くと、すべてが魔法のように機能しました。上記の pribeiro によって参照される設定は、プロジェクトが既に既定の設定に準拠しているため、必要ありませんでした。

pribeiro と nitind の両方の回答により、検索を開始するためのアイデアが得られました。ありがとうございます。

これらの「性質」を UI 内から編集する方法はありますか?

于 2009-10-19T08:28:54.490 に答える
8

同じ問題に遭遇しました。私はmavenを使用しているので、これをWebプロジェクトのpomに追加しました:

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version> <!-- just used the latest version, make sure you use the one you need -->
    <scope>provided</scope>
</dependency>

これで問題が解決し、「提供された」スコープを使用しました。これは、OP と同様に、すべてが JBoss で既に機能していたためです。

解決策を見つけた場所は次のとおりです。http://alfredjava.wordpress.com/2008/12/22/jstl-connot-resolved/

于 2011-11-21T18:46:00.590 に答える
4

JSP に JSTL Core Library を含めようとしたとき:

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

Eclipse (Indigo) で次のエラーが発生しました。

Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/core"

Project Properties -> Targeted Runtimes に移動し、使用しているサーバー (Geronimo 3.0) を確認しました。ほとんどの人は Tomcat を使用しています。これで私の問題は解決しました。それが役に立てば幸い!

于 2013-03-21T14:45:55.050 に答える
3

プロジェクトの種類によって大きく異なります。WTP の JSP サポートは、JSP ファイルが WEB-INF フォルダー (src/web、TLD を検索するために "/" として扱われる) の親である同じフォルダーの下にあること、またはプロジェクト メタデータが次のように設定されていることを想定しています。そのルートがどこにあるかを知るのに役立ちます (配置アセンブリを介して動的 Web プロジェクトで行われます)。TLD ファイルをどのように参照していますか? JSP ファイルはどこにありますか?

そして、Eclipse フォーラムへの元の投稿を見逃したのかもしれません。私が見たものは、この投稿の 1 日後に投稿されました。

于 2009-08-18T16:43:59.290 に答える
3

今日、この問題を修正しました。

  • 出力ディレクトリを WEB-INF/classes フォルダーに変更します。(プロジェクト/プロパティ/Java ビルド パス、デフォルトの出力フォルダー)
  • モジュールの依存関係を割り当てます。(Project/Properties/Java EE Module Dependencies) それらは WEB-INF/lib フォルダーにコピーされ、そこで Eclipse はタグ lib 定義も探します。

お役に立てば幸いです。

于 2009-09-25T15:08:05.507 に答える
2

の 2 つのライブラリを確認しますF:\apache-tomcat-7.0.21\webapps\examples\WEB-INF\lib

  1. jstl.jar
  2. 標準.jar
于 2011-09-03T15:25:57.467 に答える
1

SpringSTSプラグインとSpringwebmvcテンプレートプロジェクトを使用しています。最初にMavenm2eプラグインをインストールする必要がありました:http ://www.eclipse.org/m2e/

そして、プロジェクトをクリーンアップします。下Project -> Clean...

于 2013-02-10T23:51:35.513 に答える
1

tld がクラスパス (通常は WEB-INF ディレクトリの下) にある場合、次の 2 つのヒントで問題を解決できます (環境設定に関係なく)。

  1. <uri>TLD の と jsp ページの taglib ディレクティブの uri が一致していることを確認してください。<uri>tldの要素は、タグ ライブラリの一意の名前です。

  2. tld に要素がない場合<uri>、コンテナは taglib ディレクティブの uri 属性を実際の TLD へのパスとして使用しようとします。たとえば、WEB-INF フォルダーにカスタム tld ファイルを配置し、この tld へのパスを JSP の uri 値として使用できます。ただし、これは悪い習慣であり、パスがハードコーディングされるため、避ける必要があります。

于 2013-09-17T07:21:03.103 に答える
1

[ビルド パス] -> [ライブラリの追加] に移動し、追加するライブラリの種類として [サーバー ランタイム] を選択するだけです。[次へ] をクリックし、クラスパスに追加するサーバー ランタイムを選択します。jstl.jar と standard.jar がサーバーのクラスパスにある場合、問題は解決します。

于 2011-11-11T05:24:51.820 に答える
0

STS(springtool source suite)でも同じ問題がありました。

STS で、プロジェクトを右クリックし、[プロパティ]、[プロジェクト ファセット] より、ウィンドウの右側にある [ランタイム] タブをクリックし、[VMware vFabric tc Server (...)] にチェックを入れてクリックします。 「適用」すると、ワークスペースの更新後にOKになるはずです。

于 2012-02-29T19:00:53.433 に答える
0

MyEclipse と Eclipse 6.6.0 でも同じ問題がありました。すべての uri 値に赤線を引いた

<%@ taglib prefix="s" uri="/struts-tags"%>. 「Project/MyEclipse/Web/Tag Libraries」に移動し、Struts 1.2 Tiles タグのデフォルト TLD プレフィックスを「s」に設定して修正しました。「Project/MyEclipse/Web/Configure workspace settings.../Tag Libraries」の下でも同じことをしなければなりませんでした。

于 2010-05-07T17:31:13.473 に答える
0

私は Tomcat 6.0 と Eclipse を使用して同じ問題を抱えていました。友人が提案したことを試してみたところ、うまくいきました。私が尋ねた質問とコメントした返信へのリンクは、次の場所にあります。

JSTL Tomcat 6.0 taglib記述子エラーが見つかりません

これで「taglibrary 記述子が見つかりません」という問題が解決するかどうかお知らせください。

于 2012-04-04T20:08:32.127 に答える
0

一方、Java ソースのみで作業していて、作業中の大規模プロジェクトで触れていないものからこれらのエラーが発生している場合は、Eclipse で検証をオフにするだけです。設定は、[設定] -> [Web] -> [JSP ファイル] -> [検証] にあります。

于 2014-10-13T21:06:52.433 に答える
0

このエラーは、いくつかの異なるソースから発生する可能性があります。1 つのケース (この質問に対する他の回答では言及されていません) は、Eclipse が TLD ドキュメントで設定された JSP 仕様セットのバージョンを実装していない場合に発生します。Eclipse のリリースは通常、新しいサーブレットおよび JSP 仕様の実装において最大 1 年遅れます。たとえば、このEclipseバグを参照してください。

この場合、Web アプリケーションは最新バージョンの Tomcat で正常に動作する可能性がありますが、Eclipse は依然として TLD の欠落について不平を言うことがあります。短期的な解決策 (Eclipse のエラーを無視する以外) は、JSP のバージョンを Eclipse のバージョンがサポートするバージョンに下げることです。

また、実装している TLD のバージョンにも注意してください。タグ名は v1.1 から v2.0 でわずかに変更されました (つまり、infodescriptionオンにtaglibなり、 では有効な要素ではなくなりましたtag。多くの要素名にハイフンが含まれるようになりました)。Eclipse は、スペルミスのある TLD タグ名を許容しません。

TLD 2.0 (jsp バージョン 2.0) リファレンス

TLD 2.1 (jsp バージョン 2.3) リファレンス

于 2016-11-16T21:17:50.540 に答える
0

私にとって、このエラーは、Eclipse の新しいバージョンを使用しようとするたびに発生します。どうやら、新しいEclipseはM2_REPO変数をリセットし、ビューにすべてのタグライブラリエラーが表示されMarkerます(ejb検証エラーが発生する場合があります)。

実際のMavenリポジトリの場所を指すように変数を更新した後M2_REPO、すべてが機能するようにするには、2〜3回のプロジェクト - >クリーンイテレーションが必要です。

また、このタグ ライブラリ エラーに加えて、xml 検証エラー (ejb) が発生する場合もあります。対応する XML ファイルを手動で更新すると、*.xsd ファイルの検索が開始され、xml 検証エラーが解決されます。これを投稿すると、タグ ライブラリのエラーも消えます。

于 2014-08-12T06:24:08.903 に答える
-4

私も同じ問題に直面しました。\webapps\examples\WEB-INF\libEclipse と Tomcat の作業ディレクトリ (フォルダ内とフォルダ内) に同じバージョンの JSTL があることを確認してlibください。

于 2014-03-27T12:13:57.470 に答える