9

私は私を助けるかもしれない投稿を探し回ろうとしましたが、何も見つかりません。

私はJBoss4サーバーにearをデプロイしていますが、新しいプロジェクトを追加してからこの問題が発生し始めました。

この新しいプロジェクトはeclipseのJavaプロジェクトとして定義され、EARプロジェクトにはEJBプロジェクトがあり、依存するプロジェクトの1つとして新しいJavaプロジェクトがあります-eclipseを介してローカルにJBossにデプロイされた場合、問題はなく、すべてがスムーズに進みます

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

EARファイル(EJBプロジェクト)にアクセスするためにEARファイルの内部を調べた後、jarの内部で、新しいJavaプロジェクトのディレクトリ構造とすべてのクラスファイルを確認できます。不平を言うクラスは、EAR-> JARのすぐ内側にあり、探している構造と正確に一致しています。

私は他に見ることができるものに迷っています。

どんなポインタでも大歓迎です!

ありがとう

4

5 に答える 5

7

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

私の提案は、JBossを実行しているJDKを確認してから、クラスをどのようにコンパイルしたかを確認することです。

于 2011-01-14T05:55:33.177 に答える
2

コードが適切にコンパイルされていても、JBoss 4:実行時にClassNotFoundExceptionとNoClassDefFoundErrorでそのような問題が発生しました。原因を突き止めるのに4時間かかりました。

私のプロジェクトのBuildPathは問題ありませんでしたが、問題は実際にはJBossのClassPathにありました。私は次のようにして解決しました:JBoss 4.2RunTimeServer>起動設定を開く>設定の編集>ClassPath>「JARの追加」/「プロジェクトの追加」でJBossにリンクするJARとプロジェクトを追加します。

EclipseはBuildPathのおかげでJARと関連プロジェクトのクラスを知っていたので、IDEにエラーはありませんでしたが、JBossサーバーはこれらのクラスの場所を知りませんでした...

于 2014-05-21T07:19:19.870 に答える
1

これは、複数のwar/earファイルがある場合のクラスローダーの分離の問題が原因である可能性もあります

于 2011-01-14T07:51:39.970 に答える
0

urearファイルを確認してください。このような構造?

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

そうでない場合は、earファイルを再パッケージ化する必要があります。

于 2011-01-14T04:50:16.820 に答える
0

のプロパティ「Class-Path:」を確認してくださいMETA-INF/MANIFEST.MF

于 2011-01-14T04:54:24.850 に答える