0

我有一堂战争课...

SomeClass.java

这个阶级被嵌入了一场嵌入耳朵的战争中。此外,嵌入在耳朵中的是一个 EJB 类,它引用了战争中的一个类(不是我的设计)。这个类显然存在,我可以在部署的 WS 应用程序中看到它。耳朵文件如下所示...

ear file
  META-INF
  war file <Where the .class is found>
  ejb jar file

但是我仍然在 SomeClass 上得到一个 ClassNotFound 异常,谁能想到我错过了什么?这是相当旧的版本,所以即使 jar 处于爆炸战争中,我是否必须在 ejb jar 的 META-INF 中设置类路径?

谢谢

4

3 回答 3

0

由于您使用的是 WebSphere,因此您可能希望尝试将 WAR 类加载器策略设置为“Application”,如以下文档中所述:

http://pic.dhe.ibm.com/infocenter/wasinfo/v7r0/topic/com.ibm.websphere.express.doc/info/exp/ae/crun_classload.html

这将为整个应用程序创建一个类加载器,即 EJB 和 WAR 中的类将由同一个类加载器加载。这应该可以解决您的问题。

于 2013-04-02T18:10:18.767 回答
0

天哪,这真的很乱。很高兴这不是你的设计。如您所知,EJB 类永远不应该依赖于 war 文件中的库或类。也就是说,如果您需要您的类“SomeClass.java”对 war 和 ejb.jar 包都可用,那么您应该构建一个包含该类的第三个 standard.jar 文件并将其放在 ear/lib 文件夹下你的包裹。这应该使该类可用于两个包,即 .war 和 .jar(ejb) 文件。

于 2013-04-01T18:09:10.993 回答
0

在 EAR 文件结构下创建一个 lib 文件夹,并复制您想要在其中用于 WAR 和 EJB 的所有 jar 文件。这应该可以解决问题。

于 2013-09-25T20:32:26.813 回答