如何将第三方JAR包打包进EJB jar?

12

我有一个旧的J2EE应用程序(J2EE 1.3),它被打包成EAR文件,在EAR文件中有WAR文件和EJB JAR文件。现在,其中一个EJB JAR文件需要引用一些第三方库JAR文件,请问最好将这些JAR文件放在哪里以及如何进行打包?


3
好问题。为什么EJB/EAR打包的部署/结构比WAR要困难得多?这应该是一个自动化、相当典型的使用案例。 - Roboprog
1个回答

18

它们放在ear文件中,可以放在根目录下,或者你可以创建一个lib目录来存储它们。任何需要引用它们的项目(EJB或WAR)都必须在清单文件的Class-Path:中包含它们。

Ear内容

  - log4j.jar
  - lib
     - commons-lang.jar
  - MyEJBProj.jar
  - MyWAR.war

我的EJB项目内容

 - classes
 - META-INF
    - MANIFEST.MF

MANIFEST.MF

    Manifest-Version: 1.0
    Class-Path: log4j.jar lib/commons-lang.jar

1
官方文件名为MANIFEST.MF,该文件的格式可能相当挑剔。您需要将所有内容放在同一行上(或者在后续行上使用单个空格字符作为前缀以进行延续),并且需要使用“,”分隔路径。换句话说:类路径:log4j.jar,lib/commons-lang.jar - Brett Kail
名称应该是全大写,但类路径可以简单地用空格分隔,即使在同一行上也可以。只要确保最后一个条目后面没有空格,因为它表示继续。例如,Eclipse将每个JAR文件都写成一行,并在每行末尾加上一个空格,如果有另一个JAR文件,则会显示在下一行。 - Robin
不要忘记在 MANIFEST.MF 的末尾包含两个换行符。我记得有一个旧的 bug,如果没有这样做,上面的一些内容将被忽略... - Martin Klinke
1
这就是为什么我尽可能让我的IDE来编写代码的原因;-) - Robin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接