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.我应该把 foo.jar 和 ejb3 jar 放在哪里?

提前致谢

4

1 回答 1

1

有一个循环依赖会产生这个问题

于 2010-01-29T18:47:30.977 回答