2010年10月20日水曜日

Eclipse の .classpath はどこで操作?Server 実行時に Maven 関係でハマり

いやぁ、参りましたわぁ ...

いま、svn リポジトリにアップしたソースコードから開発環境を戻しているんだが、超ハマり。

相手は何かと言えば ...
  • Eclipse の 動的 Web プロジェクト
  • Maven2 でプロジェクトを構成している
  • Spring を使用している(web.xml 内で ContextLoaderListener を呼び出している)
  • ソースは全て svn に入れているが、.classpath, .project ファイルは svn に入れない
で、どこでハマりかと言えば
  1. Subversive で svn から新規プロジェクトを作成
  2. M2Eclipse で プロジェクト構成の更新を行い
  3. STS の Spring プロジェクト・ネーチャーを追加
  4. サーバーで実行を行う
  5. → ここでエラー
どんなエラーかというと

2010/10/20 21:53:02 org.apache.catalina.core.StandardContext listenerStart
致命的: クラス org.springframework.web.context.request.RequestContextListener のアプリケーションリスナの設定中にエラーが発生しました
java.lang.ClassNotFoundException: org.springframework.web.context.request.RequestContextListener
 at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645)
 at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491)
 at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4078)
 at org.apache.catalina.core.StandardContext.start(StandardContext.java:4630)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
 at org.apache.catalina.core.StandardHost.start(StandardHost.java:807)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
 at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)
 at org.apache.catalina.core.StandardService.start(StandardService.java:519)
 at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
 at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:597)
 at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
 at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
2010/10/20 21:53:02 org.apache.catalina.core.StandardContext listenerStart
致命的: クラス org.springframework.web.context.ContextLoaderListener のアプリケーションリスナの設定中にエラーが発生しました
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
 at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645)
 at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491)
 at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4078)
 at org.apache.catalina.core.StandardContext.start(StandardContext.java:4630)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
 at org.apache.catalina.core.StandardHost.start(StandardHost.java:807)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
 at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)
 at org.apache.catalina.core.StandardService.start(StandardService.java:519)
 at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
 at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:597)
 at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
 at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
2010/10/20 21:53:02 org.apache.catalina.core.StandardContext listenerStart
致命的: 前のエラーのためにアプリケーションリスナのインストールをスキップします
2010/10/20 21:53:02 org.apache.catalina.core.StandardContext start
致命的: Error listenerStart
2010/10/20 21:53:02 org.apache.catalina.core.StandardContext start
致命的: 以前のエラーのためにコンテキストの起動が失敗しました [/xxxxxxxxxx] 

で、いろいろ原因を探った結果、なんか Server (Eclipse 上で動くやつね)で起動する時に、Maven のライブラリがデプロイされていないっぽい???

そんで、以前の環境を確認したら、.classpath ファイルの中身に違いを発見

前のは

で、今のは

ま・て・よ、、、

これか!?この部分か!?

で、試したらエラーは解決して、実行でけた!!

よかった~

しかし、この値って、どこで操作して設定するものなんだろうか ... 疑問は残る

※ 追記

判明した!!

パッケージ・エクスプローラーを右クリックして、プロパティを選択すると出てくる「*** の プロパティー」ウィンドウの左のツリーの中に「Deployment Assembly」というのがあって、ここを操作すると、.classpach ファイルと .settings/org.eclipse.wst.common.component ファイルの両方を操作するっぽい

スッキリした~

0 件のコメント:

コメントを投稿