我正在尝试将包含ejb应用程序的ear部署到weblogic 9.2服务器中。
此耳朵是使用maven创建的(本身使用耳朵蚂蚁任务)。 Maven产生以下结构:
myApp.ear
- META-INF
- application
- MANIFEST.MF
- dependency-1.jar
- dependency-2.jar
- ...
- dependency-n.jar
- myEjb.jar
清单包含一个看起来很好的类路径部分(列出所有依赖jar)
当我尝试部署耳朵时,我收到NoClassDefFoundError异常。
如果我把所有的jar放在我的域的lib目录中,那么耳朵就会成功部署。
如果我把所有的罐子放在一个名为APP-INF / lib(weblogic标准)的目录中,那么耳朵也会成功部署。
myApp.ear
- META-INF
- application
- MANIFEST.MF
- APP-INF
- lib
- dependency-1.jar
- dependency-2.jar
- ...
- dependency-n.jar
- myEjb.jar
在同一个项目中,我有其他耳朵没有使用APP-INF / lib目录,而且工作正常。
有人知道为什么weblogic无法部署我的耳朵吗?
经过一番调查后,我发现了问题来源:它是myEjb.jar模块的清单类路径。请参阅已接受回复中的评论。
非常感谢。
答案 0 :(得分:2)
EAR中依赖jar的标准方法是将它们放在文档中给出的APP-INF / lib中
http://download.oracle.com/docs/cd/E13222_01/wls/docs81/programming/environment.html#1099434
我怀疑你的第一个EAR中的问题是在你的Manifest.mf中的实际类路径条目中
请参阅http://download.oracle.com/docs/cd/E12840_01/wls/docs103/programming/classloading.html#wp1065667
上的 Manifest Class-Path 部分清单Class-Path条目引用 相对于其他档案馆 当前存档中的这些条目 已定义
是否有任何子目录或相对路径不正确?