weblogic.servlet.jsp.StandardTagLibがNoClassDefFoundError

WebLogicの8.1→11にバージョンアップでjsp表示時に
weblogic.servlet.jsp.StandardTagLibがNoClassDefFoundError
になって500 internal server error


とあるシステムのリプレースの技術検証中に嵌った;

まずは、warを単純に新環境にデプロイしてみる(ローカル(PC))

WebLogic11にDataSourceやらJMSやら一通り設定して、warをautodeployに置いて...

サクっと動いた^^

んで、検証機(CentOS5.5)で...

PRODUCTIONモードだから、手動でデプロイして...

あれ;


java.lang.NoClassDefFoundError: weblogic.servlet.jsp.StandardTagLib

orz


確かに、サーバライブラリはどこのjar探しても、weblogic.servlet.jsp.StandardTagLibなんてない

、war中にもない

原因

jspがプリコンパイルされていたのだ;

対処

warからプリコンパイルクラスを削除してデプロイ

後でビルド環境(JDKや利用ライブラリ...)のバージョンアップも検討する予定だから、暫定ってことでw

結論

weblogic.servlet.jsp.StandardTagLibは、WebLogic8.1ん時の開発環境でweblogic.jarん中にあったのだろう...
そして、その後のバージョンで廃止(もしくは移動)されたのだ


あと、開発モードとPRODUCTIONモードでjspの扱いが違う(開発モードだとプリコンパイル無視?)っぽい


jspの扱いについてマニュアル調べたけど、開発モードとPRODUCTIONモードでの違いはbingoなもの見当たらなかった。(pageCheckSeconds パラメータとかくらい)


WebLogicに限らず、コンテナライブラリ依存には気をつけよう(ry