...WEB-INF/lib/standard-1.1.2.jar" から TLD "META-INF/c.tld" を読み込めません: org.apache.jasper.JasperException: TagLibraryValidatorクラスのロード又は インスタンス化に失敗しました: org.apache.taglibs.standard.tlv.JstlCoreTLV というエラー。 ぐぐってみると、色々なシチュエーションで 発生するようで一概に何ともですが、 とりあえず自分が出会ったケースを記しておきます。 ちょうどこないだのブログで話題にした、 // jstlとtaglibs/standardが必要!? http://d.hatena.ne.jp/jflute/20130122/1358862492 Geronimo の Servlet と JSP が、 WEB-INF/lib配下に含まれていると発生しました。 ローカル環境にてsysdeo経由でTomcat6を使ってます。 (そのブログで言う "今のプロジェクト" とは、 ぜんぜん別プロジェクトです) 起動時のログに、 ...jar not loaded. See Servlet Spec 2.3... と出てきます。 WEB-INF/libへのJARのコピーは、 Eclipseプラグインの 「Maven Additional Plugin」 を使っていたのですが、 (これはこれですごい便利なプラグインですよっ) provided定義のjarもWEB-INFに コピーされてしまっていたようです。 で、これが、 javax.servlet/servlet-api javax.servlet/jsp-api の方だと、しっかりWEB-INF/libには コピーされないので正常に動作しています。 (もうこっちを使うようにしました) 試しに、servlet-api.jar を手動で入れてみました。 同じく jar not loaded は出ますが正常に動きます。 さらに試しに、jsp-api.jar を入れてみました。 java.lang.NoSuchMethodError: javax.servlet.jsp.JspFactory .getJspApplicationContext(Ljavax/servlet/ServletContext;) Ljavax/servlet/jsp/JspApplicationContext; というエラーが発生。 試しに、Servletを除去してJSPだけにしても、 同じエラーが発生。 試しに、Geronimoに戻して、 geronimo-jsp_2.0_specはlibから除去して、 geronimo-servlet_2.4_specだけをlib配下に。 そしたら正常に動きました。 geronimo-jsp_2.0_specを含めると、 やっぱり最初に書いたエラーが発生。 つまり、Servletの方じゃなくて、 JSPの方が含まれちゃうとどっちもOUT。 たまたま Maven Additional が、 Geronimoの方だとコピーしてしまったと。 Mavenのcopy-dependenciesだとどうか!? (これはやってません...同じかなぁ) いずれにせよ、ServletとJSPに関しては、 Geronimoの方を使う理由は(今のところ)ないので、 いつもjavax.servletの方が使えばいいのかと。 というか、そもそもServletの指定の仕方、 合ってるのかなぁと不安に思ったり... というか、そもそも2.4ってもう古い!? => Tomcat 6の実力を早速試す | マイナビニュース というか、もう2.5とかも言ってないで、 しっかり3.0にアプローチしていった方がいいのかも。 (web-fragmentとか便利そうだし) => Tomcat 7も対応したServlet 3.0... | @IT ServletとTomcatのバージョンの関係とかも、 あんまり意識してなかったなぁ... そういう意味では、そもそもTomcat6なのに、 2.4/2.0を指定してるのがおかしいとも言えるかも。 やばり、相変わらずわりと感覚的(><