2011-01-14 31 views
6

私は助けてくれるかもしれない投稿を見落とそうとしました。ファイルが存在するときにjava.lang.NoClassDefFoundError

私はJBoss4サーバーに耳を配置しています。私は新しいプロジェクトを追加してからこの問題が発生しました。

この新しいプロジェクトはeclipseのJavaプロジェクトとして定義されています.EARプロジェクトには、依存するプロジェクトの1つとして新しいJavaプロジェクトがあります.Eclipseを使用してJBossにローカルにデプロイすると、すべてがスムーズに進んでいます

しかし、テスト環境(外部Eclipse)でJBossにデプロイするときは、新しいJavaプロジェクトで定義されているクラスの1つでjava.lang.NoClassDefFoundErrorを取得し続けました。

jar(EJBプロジェクト)に到達するためにEARファイルを調べてから、jarファイル内で新しいJavaプロジェクトのディレクトリ構造とすべてのクラスファイルを確認できます。それが耳を傾けるクラスは、EAR-> JARの中にあり、それが探している正確な構造に一致しています。

私は他に何が見えるのか分かりません。

どのポインタも大変ありがとうございます!

ありがとうございました

+0

...

Eclipseは、JARファイル内のクラスとビルドパスに関連プロジェクトのおかげで知っていたので、IDEには誤りがありませんでしたが、これらのクラスを見つけるためにどこにJBossサーバは知りませんでしたすべてそれと私には同じ例外が与えられます –

+0

このスレッドに返信するのをお送りしています:問題が何であるかを知っていましたが、途中のある時点では本当にばかげていました。文字を大文字に変換します。例えば。packagenameからpackageNameそしてどこかの道に沿って、いくつかのクラスファイルはまだ古い名前(大文字ではない)でそれを参照しています。したがって、NoClassDefFoundError –

答えて

6

いくつかのクラスがコンパイルされる方法に不一致があると、このエラーが発生することがよくあります。たとえば、Java準拠レベルを設定せずにJDKの新しいバージョンでクラスの一部をコンパイルし、以前のバージョンで実行している場合などです。あなたは、クラス

+0

問題は、パッケージ名をいくつかの大文字または小文字に大文字に変換され、その逆の場合もあります。 –

0

チェック耳のファイル。このような構造ですか?

myapp.ear 
|+ META-INF 
    |+ applications.xml and jboss-app.xml 
|+ myapp.war 
    |+ web pages and JSP /JSF pages 
    |+ WEB-INF 
     |+ web.xml, jboss-web.xml, faces-config.xml etc. 
     |+ lib 
     |+ tag library JARs 
     |+ classes 
     |+ servlets and other classes used by web pages 
|+ myapp.jar 
    |+ EJB3 bean classes 
    |+ META-INF 
     |+ ejb-jar.xml and persistence.xml 
|+ lib 
    |+ Library JARs for the EAR 

もしそうでなければ、耳のファイルを再パッケージするべきです。

+0

これは構造がどのようになっているのですが、EJBのjarファイルではpersistence.xml ejb-jar.xmlの代わりに –

0

クラスパス」をMETA-INF/MANIFEST.MFにチェックしてください。

+0

クラスパスが空です –

+0

"Class-Path:dependencyA.jar dependencyB.jar"のような依存関係jarを書き込もうとします –

1

をコンパイルする方法

私の提案は、あなたとのJBossを実行しているJDKをチェックすることです、そしてあなたは

1

I複数の戦争/耳のファイルを持っている場合、これはまた、原因クラスローダの分離の問題である可能性がありチェックコードがうまくコンパイルされていても、実行時にJBoss 4のClassNotFoundExceptionとNoClassDefFoundErrorのような問題が発生しました。原因を突き止めるのに4時間かかった。

私のプロジェクトのBuildPathは問題なく、問題はJBossのClassPathにありました。 「JBoss 4.2 RunTime Server」>「起動設定を開く」>「設定の編集」>「ClassPath」>「Add JARs」/「Add Projects」を使ってJBossにリンクするJARとプロジェクトを追加する。私が試した

関連する問題