2011-01-19 14 views
1

私のアプリケーションを開発するためにEclipseを使用しています。私のアプリケーションでは、私はいくつかのプロジェクトを持っており、それらのプロジェクトはEARプロジェクトでの参照を持っています。NoClassDefFoundError

プロジェクトの1つでは、私はそのインターフェイスのインターフェイスとインプレッションを作成しました。私はそれが働いていなかったそのクラス

MyInterface myObj = new MyClass(); 

のためのオブジェクトをcraeteしようとしています

ので、私は、デバッグモードでサーバーを開始しました。私はNoClassDefFoundErrorを得ています。

なぜこのエラーが発生するのですか。私はすでに私のプロジェクトビルドパスに新しいプロジェクトを追加しました。私が書く場合

MyInterface myObj = null; 

私は何もエラーを生じません。

+0

何*正確に*例外がどのように見えるん

は私の関連質問と回答を確認してください?どのクラスが見つからないのですか? –

+0

ビルドパスに追加するだけでは不十分です。バイナリパスを 'WEB-INF/classes'に設定する必要があります。 Webツールを使用する場合は、自動的に設定する必要があります。 –

+0

MyClassが参照するその他のクラスは何ですか?あなたは図書館がないかもしれません。 –

答えて

0

Eclipseで実行している実行時設定で使用されるクラスパスを確認します。通常、プロジェクトライブラリとソースフォルダによって定義されます。

あなたはEARで作業しているので、おそらくアプリケーションサーバーを使用していて、そのほとんどが耳や戦争ごとに1つの親クラスローダーと子クラスローダーで動作することを知る必要があります。つまり、親クラスローダーによってロードされたクラスが、子クラスローダー内にあるクラスをインスタンス化しようとすると、NoClassDefinedErrorが返されます。

+0

エラーメッセージが表示されています。私は何をしますか:EJB仕様の奇妙な変わったようです。例外は次のとおりです。java.lang.NoClassDefFoundError: –

0

これは私に起こっていました。問題は、 "MyClass"がクラスパスにないことではありませんでした。私の場合に欠けていたものは、MyClass(つまりインポート)内の依存関係の1つであり、コンストラクターが呼び出されたときに失敗しました。 Class Constructor fails throwing Exception on Class Loadingだけでなく、すべての私の問題が始まったときである前に質問:Weird behavior with Constructor and Class. Application hangs `forever` on Constructor