0

私はEclipse 3.5、JBoss 4.2、EJB3で次の手順を実行しますが、クラスが見つからないという例外に直面しています

1.このコードを foo.jar ファイルにコンパイルする

package mypackage.foo;
import myejbpackage.ejb.fooInterface; 
class foo implements fooInterface{
 @override
 void helloWorld(){System.out.print("HelloWorld");}
     }

fooInterface インターフェースは、使用する EJB 内に記述されていることに注意してください。

2. リフレクションを使用して、同じ ejb を持つこのクラスからインスタンスを取得します

package myejbpackage.ejb;
class fooCaller{
    void call(){
     Class foo=  Class.forName("mypackage.foo.foo");

fooInterface iDataBackupWriter =(fooInterface) foo.newInstance(); fooInterface.helloWorld(); } }

3.次に、ステートレス ejb3 内で呼び出します

package myejbpackage.ejb;
test(){        
  System.Out.Write("before calling");
   new fooCaller().call();
    }

4.次に、Jboss 4.2 にデプロイし、foo.jar を default/lib に配置します。

5. 次に、ejb 3 メソッドを呼び出します。単純なクライアントを使用します。

それは印刷します:

 "before calling"

そして、Eclipseコンソールで次の例外が発生します

  javax.ejb.EJBException: java.lang.RuntimeException: java.lang.NoClassDefFoundError:                       myejbpackage/ejb/fooInterface; nested exception is: java.lang.RuntimeException: java.lang.NoClassDefFoundError: myejbpackage/ejb/fooInterface
 java.lang.RuntimeException: java.lang.NoClassDefFoundError:myejbpackage/ejb/fooInterface

なにか提案を ?1.これは JBOOS の例外ですか? なぜですか? 1. ejb3 jar で見られるように、foo.jar をどこに置くべきですか?

前もって感謝します

4

1 に答える 1

1

この問題を引き起こす循環依存がありました

于 2010-01-29T18:47:30.977 に答える