JasperException: 絶対URI: http://java.sun.com/jsp/jstl/core は web.xmlとこのアプリケーションを配備したJARファイルの どちらかでも解決できません ってな感じのエラーが、起動時に発生したら、 jstl と taglibs/standard がクラスパスに 設定されているか確認。つまり、pom.xmlを確認。 ローカルで動いてたのに、結合環境にアップしたら出たのです。 ローカルは Jetty (Run Jetty Run) で起動していて、 結合環境は Tomcat で起動(そしてエラー)。 pom.xmlには、jstl と taglibs/standard がなかった。 それらを追加したら、結合環境でも起動した。 (バージョンは、1.1.2 を指定) つまり、Jettyは JSTL を含んでいて、 Tomcatはそうではない。 というかそうではないという方が当たり前で、 ローカルでJettyを使ってたから、 JSTL 忘れが気付かなかったと。
結構、そういうの他にもあるんですよねぇ。 サーブレットコンテナが持っているのかどうか、 よくわからないものたち。 Seasarを使ってて、 ある意味 "習慣的" に定義するのが、 o geronimo-jta_1.1_spec (JTA) o geronimo-ejb_3.0_spec (EJB) JTAやEJBがTomcatに含まれてるかどうかは知らない。 厳密にドキュメントを読んで確認したことはない。 まあ昔ながらも感覚的な知識と経験でないだろうと。 WebLogicとかだったらEJBあるからあるだろうと。 なので、Tomcatリリースのときは、 これらを compile or runtime で設定。 geronimo-jpa_3.0_spec (JPA) は... すっかりJPAを使うプロジェクトに出くわさないので、 まず定義することはない。(実行時に無くても動く) o geronimo-servlet_2.4_spec (Servlet) o geronimo-jsp_2.0_spec (JSP) は、TomcatだろうがJettyだろうが含まれてるだろうから、 とはいえ、コンパイル時に必要だから provided で定義。 と思いきや、GroupID "javax.servlet" の servlet-api と jsp-api を定義してる プロジェクトもあって、こっちは何!? まあ、どっちでもいいのかな... (ふと中を覗いてみると、Apacheライセンスだっ) とにかく今のプロジェクトでは、 o javax.servlet/servlet-api : provided o javax.servlet/jsp-api : provided o jstl/jstl : compile o taglibs/standard : compile o geronimo-jta_1.1_spec (JTA) : compile o geronimo-ejb_3.0_spec (EJB) : compile ※EJBはruntimeでもいいかも という感じで共通のpom.xml(parent)にて定義して、 ローカルのJetty、結合のTomcatで無事動いてます。 とまあ、わりと感覚的...(>< 【追記】 Twitterにてコメント頂きまして、 「JSTLはJavaEE5から標準に組み込まれたので、 JavaEE1.4対応の古いTomcatでは入ってない」 とのこと。ありがとうございます!