- PR -

CactusテストでNoClassDefFoundErrorが出る

投稿者投稿内容
スキーマ
会議室デビュー日: 2003/11/26
投稿数: 10
投稿日時: 2005-08-27 17:15
ukさん、レス有難うございます。

勝手に「フリーズという言葉の意味が分からない」と決め付けられて
少々頭に血が上ってしまいました。

さて、問題については自己解決したので報告します。
問題は
「maven cactus:testにおいて、
org/apache/commons/beanutils/DynaProperty
NoClassDefFoundError
が出る。同様の問題についてネットで調べたところ、
http://www.pegasisolutions.net/pegasisolutionsnet0/errorResolved_0.jsp
のような解決法があるので試すと、
Tomcat自体は正常に起動できるが、maven cactus:testを
実行すると
http://www5.ocn.ne.jp/~j2sdk/report/prompt.jpg
のままフリーズする、というものでした。
この問題について、僕は
TOMCAT_HOME/common/lib に貼り付けた
commons-beanutils-core.jarが他のJARファイルとクラスが重複しているのでは
ないか、と考えました。
jarファイルを展開して調べたところ、やはり
commons-beanutils-core.jarと
TOMCAT_HOME/common/lib/commons-collections.jarでは
いくつかのクラスが重複していました。
そこで重複したクラスを除いたクラス群を再度JAR化して
TOMCAT_HOME/common/libに配置したところ、
maven cactus:test
が正常に実行できるようになりました。
これで問題は解決しました。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-08-27 18:51
解決したとのことでなによりです。
恐らく参照元のクラスが親のクラスローダでロードされており、参照先のクラスが子のクラスローダでロードされていたからでしょうね。
jar ファイルにクラスの衝突があるかどうかはこんな↓ツールでも調べられます。
・わらじ1.0
http://yusuke.homeip.net/waraji/

フリーズしてしまったときはまずスレッドダンプをとって何が発生しているのか確認すると良いです。
スレッドダンプ自体はこんな↓ツールをつかうと解析しやすいです。
http://yusuke.homeip.net/samurai/

スキルアップ/キャリアアップ(JOB@IT)