9

そのため、私はOSGiのGeminiランタイムでJSTLを使用していました。そして、私が自分のURLにアクセスしようとすると、次の例外が発生しますservlet:-

SEVERE: Servlet.service() for servlet jsp threw exception
org.apache.jasper.JasperException: /WEB-INF/login.jsp (line: 3, column: 66) Unable to read TLD "META-INF/c.tld" from JAR file "file:/D:/OSGi%20Runtime/Gemini/gemini-web/dep/com.springsource.javax.servlet.jsp.jstl-1.2.0.v20110728.jar": org.apache.jasper.JasperException: Failed to load or instantiate TagLibraryValidator class: org.apache.taglibs.standard.tlv.JstlCoreTLV

ただし、ランタイムに必要なバンドルがすべて揃っていることを確認しました。私が持っている関連バンドルは次のとおりです。

71  ACTIVE      javax.servlet_3.0.0.v201103241009
73  ACTIVE      javax.el_2.2.0.v201105051105
74  ACTIVE      javax.servlet.jsp_2.2.0.v201103241009
75  ACTIVE      com.springsource.javax.servlet.jsp.jstl_1.2.0.v20110728
121 ACTIVE      com.springsource.org.apache.taglibs.standard_1.1.2.v20110517

より多くのバンドルがありますが、それらは関連するものです。だから、何が悪かったのか理解できません。

バンドルをダウンロードしたSpringSourceRepositoryから、org.apache.taglibs.standardバンドルバンドル121)にそれが含まれていることは明らかJstlCoreTLV classです。だから、わからない、ここで何が起こっているのか。

これが私が使用している私のJSPヘッダーです(念のため、それは関連しています):-

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

私が使用しているもの:-

  • Servlet 3.0
  • JSP 2.2
  • Gemini Runtime 2.1
  • JSTL 1.2.0

アップデート: -

以下に説明する問題は解決されたようですが、以下に示すような警告は表示されません。それは、他の人と互換性のないtaglibs.standard_1.1.2-(バンドル121 )を持っていたためです。それで、私はそれを取り除きました、そして、警告は消えました。

したがって、これからは何でも無視できます。しかし、上記の問題はまだあります。私はまだそれを得ていJasperExceptionます。@BalusCからの貴重な入力のおかげで、問題のドメインが少し減ったので、これはさらに役立つかもしれません。


この後の部分は解決されます。だから、あなたはそれを無視することができます:-

また、私が持っているOSGi JSTLバンドルのバージョンがBundle 75他のバンドルと互換性があるかどうかもわかりません- javax.el、、、taglibsなどservlets。を使用してJSTL 1.2.1いたのですが、のバンドルを取得できませんでしたJSTL 1.2.1。私が手に入れたのは、使用したバンドル(JSTL 1.2.0)でした。これが私を悩ませている理由は、アプリケーションを起動したときにこれらの種類のメッセージが表示されるためです。

Jan 22, 2013 7:14:05 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/core is already defined
Jan 22, 2013 7:14:05 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/core is already defined
Jan 22, 2013 7:14:05 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/fmt_rt is already defined
Jan 22, 2013 7:14:05 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/fmt is already defined
Jan 22, 2013 7:14:05 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/fmt is already defined
Jan 22, 2013 7:14:05 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/functions is already defined

ご覧のとおり、上記の2つの異なるURLがあります。

  • URI:http://java.sun.com/jstl/core
  • URI:http://java.sun.com/jsp/jstl/core

JSTL現在、これらの両方のURLをAFAIKすると、同じバージョンに属していません。それで、それはいくつかの問題を引き起こす可能性がありますか?そして、彼らが来る理由は何でしょうか?使用したばかりJSTL bundleです。

4

5 に答える 5

10
com.springsource.javax.servlet.jsp.jstl_1.2.0.v20110728
com.springsource.org.apache.taglibs.standard_1.1.2.v20110517

JSTL 1.2.0 API+impl と JSTL 1.1.2 impl を混在させています。

両方の実装が互いに競合しており、これがあなたが見ているすべての問題を説明しています。

1.1.2 impl を取り除きます。

以下も参照してください。

于 2013-01-31T02:13:10.110 に答える
0

これは暗闇の中でのショットです。以下のリンクにたどり着いたかどうかはわかりません。

「TagLibraryValidator クラスの読み込みまたはインスタンス化に失敗しました: org.apache.taglibs.standard.tlv.JstlCoreTLV」を投稿したエラー メッセージは、かなり一般的なようです。

このリンクから: http://christerblog.wordpress.com/2010/05/04/tag-library-woes-deploying-war-on-tomcat-6/

WAR ファイルに競合する/互換性のない jar ライブラリがありますか?

ここにある別のものも、ビルド パス内の互換性のない jar を指しています: Unable to read TLD "META-INF/c.tld"

于 2013-01-31T08:28:07.597 に答える
-1

まず第一に、私はこの質問に本当に答えられるとは思いません.これがあなたに関係があるかどうかはわかりません.

Pax Webに切り替えるまで、私もこの問題に苦労しました。それは箱から出してかなりうまくいきました。以前に戻って、以前のセットアップが機能しなかった理由を正確に把握するつもりでしたが、そうはなりませんでした。

したがって、あなたの状況で可能であれば、独自のバンドルを手動で選択するよりも Pax Web を使用してください。

于 2013-01-28T09:48:38.950 に答える