2009-09-01 70 views
12

我有一个旧的J2EE应用程序(J2EE 1.3),它包装到EAR中,在EAR中有WAR和EJB JAR。现在,其中一个EJB JAR需要引用一些第三方库JAR,那么封装这些JAR的最佳位置是什么?如何将第三方JAR打包到EJB jar中?

+2

非常好的问题。为什么EJB/EAR打包的部署/结构比WAR更难?这应该是一个自动的,非常典型的用例。 – Roboprog 2013-02-20 00:05:52

回答

18

他们去EAR文件,在根目录,也可以创建一个的lib目录来存储的。任何需要引用它们的项目(EJB或WAR)都必须将它们包含在清单文件的 类路径:中。

耳内容

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

MyEJBProj内容

- 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 – 2009-09-03 05:24:46

+0

更正名称(编辑以反映该名称)应该是全部大写,但类路径可以简单地用空格分隔,即使在同一条线。只需确保最后一次输入后没有空格,因为它表示延续。例如,Eclipse会在每行的一个jar文件中写入/显示类路径,并在每行的后面添加一个空格。 – Robin 2009-09-03 13:30:20

+0

不要忘记在MANIFEST.MF的末尾包含两个换行符。我记得一个旧的bug,这是必要的,否则上面的一些内容将被忽略... – 2009-09-03 13:36:09

相关问题