TLD "META-INF/c.tld" を読み込めません

...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

GeronimoServletJSP が、
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だとどうか!?
(これはやってません...同じかなぁ)

いずれにせよ、ServletJSPに関しては、
Geronimoの方を使う理由は(今のところ)ないので、
いつもjavax.servletの方が使えばいいのかと。

というか、そもそもServletの指定の仕方、
合ってるのかなぁと不安に思ったり...
というか、そもそも2.4ってもう古い!?
 => Tomcat 6の実力を早速試す | マイナビニュース

というか、もう2.5とかも言ってないで、
しっかり3.0にアプローチしていった方がいいのかも。
(web-fragmentとか便利そうだし)
 => Tomcat 7も対応したServlet 3.0... | @IT

ServletTomcatのバージョンの関係とかも、
あんまり意識してなかったなぁ...
そういう意味では、そもそもTomcat6なのに、
2.4/2.0を指定してるのがおかしいとも言えるかも。

やばり、相変わらずわりと感覚的(><