【问题标题】:Weblogic EJB deployement: classes in jar inside ear are not accessibleWeblogic EJB部署:无法访问jar里面的类
【发布时间】:2011-04-09 06:03:30
【问题描述】:

我正在尝试将包含 ejb 应用程序的 ear 部署到 weblogic 9.2 服务器中。

这个耳朵是使用 maven 创建的(它本身使用 ear ant 任务)。 Maven 产生以下结构:

myApp.ear
 - META-INF
   - application
   - MANIFEST.MF
 - dependency-1.jar
 - dependency-2.jar
 - ...
 - dependency-n.jar
 - myEjb.jar

清单包含一个看起来不错的类路径部分(列出了所有依赖项 jar)

当我尝试部署 ear 时,出现 NoClassDefFoundError 异常。

如果我把我所有的 jars 放在我域的 lib 目录中,ear 就成功部署了。

如果我将所有的 jar 放在一个名为 APP-INF/lib(weblogic 标准)的目录中,则 ear 也已成功部署。

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 模块的清单类路径。请参阅已接受回复中的评论。

非常感谢。

【问题讨论】:

    标签: java deployment jakarta-ee weblogic ejb


    【解决方案1】:

    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部分

    清单类路径条目参考 相对于其他档案 这些条目的当前存档 已定义

    是否有任何子目录或相对路径不正确?

    【讨论】:

    • 感谢 JoseK。我了解到带有 APP-INF/lib 的耳朵是 weblogic 标准。但是我的构建系统在没有这个目录的情况下产生了 ear。生成的清单看起来也不错。最奇怪的事实是使用相同工具的其他耳朵构建工作正常。
    • @Guillaume:我想知道是否有任何依赖 jar 依赖于另一个捆绑的依赖 - 从而导致问题?
    • 我发现了问题:这是 ejb.jar 模块上的 Manifest Class-Path 问题,而不是 ear 的 META-INF/MANIFEST Class-Path 中的问题。非常感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-10
    • 2013-08-19
    • 1970-01-01
    • 1970-01-01
    • 2015-04-20
    • 1970-01-01
    • 2017-04-19
    相关资源
    最近更新 更多