2013-02-27 118 views
1

我有三个项目,我们称它们为RAD(Eclipse)中的A,B和C. A是一个简单的Java项目,支持B和C都将使用的代码。 B和C都是可以在WebSphere上运行的web应用程序。RAD项目参考/类未找到

我写了B,其中包含A作为构建路径中的项目引用,并将它包含在部署程序集中作为jar放入web-inf/lib中。这或多或少地完美。

C是一个已有的项目,其他人写道我必须使用相同的代码。我尝试使用相同的技巧(我认为),并且在编译时发现A,但是当我发布到测试环境类时未找到。当我输出一个耳朵时,我发现C有一个代表A的jar,并且位于类似的位置。但是,C在jar的根目录(在战争的旁边)有一个lib目录。 A.jar在战争之内的lib中。

我从来没有在其他部署中看到过这个额外的lib文件夹,并且一直在淘洗这个设置并且没有IDEA来自它。

所以我的问题是: 1)有谁知道什么是生产该根lib文件夹 但更重要的是...... 2)任何想法,为什么我的课都找不到......我想这额外的lib以某种方式搞乱了它,但A.jar在C.war的web-inf/lib中。

回答

0

这被称为EAR的library-directory并且包含可以被所有模块访问的实用程序罐。它默认为'lib',但可以更改。如果a.jar文件被两场战争所需要

  • ,然后尝试在lib文件夹 -

    你应该使用zip工具编辑EAR文件。它不应该包含所需的WAR

  • 否则中的任何代码,编辑EAR文件,并把它拿出来解决lib文件夹
+0

哎呀,在写我自己的之前没有看到你的回复。你实际上已经死了。我的问题是为什么战争的web-inf/lib行为在这个EAR库中不起作用。你知道这可能是为什么吗? – user1187719 2013-02-27 15:27:14

+0

我不认为整个WEB-INF/lib停止工作。它可能是特定的罐子。很高兴我可能得到了一些帮助。 – 2013-02-27 15:29:49

+0

为什么特定的罐子会停止工作?我认为EAR lib是在类路径中首先搜索的,但如果这种行为不能阻止战争的web-inf/lib被类似处理,为什么它会选择一些不处理的jar?正如我所说,我已经解决了这个具体问题,但我很想了解哪里出了问题。 – user1187719 2013-02-27 17:13:40

0

的。这是发生了什么事。我不知道,一位同事实际上创建了一个二级库目录,因为他打算在这个耳朵下部署第二场战争,并且想要一个共享库的地方。

我还是不明白这下一部分。出于某种原因,这个lib目录不仅仅添加到类路径中,而且似乎取代了A.jar所在的web-inf/lib。由于他的项目还需要A.jar(最终),我很满意将A.jar生成到该文件夹​​中。但是我确定想知道为什么在创建这个替代库时web-inf/lib停止工作。