我有三个项目,让我们在RAD(Eclipse)中称它们为A,B和C. A是一个简单的Java项目,其中包含B和C都将使用的支持代码。 B和C都是将在WebSphere上运行的webapp。
我编写了B,其中包含A作为构建路径中的项目引用,并将其包含在Deployment Assembly中,作为jar放在web-inf / lib中。这或多或少完美无缺。
C是其他人写的一个预先存在的项目,我必须应用相同的代码。我尝试相同的技巧(我想),当它发现A编译时,当我发布到测试环境类没有找到。当我导出一个耳朵时,我发现C有一个代表A的jar,并且位于类似的位置。但是,C在jar的根目录中有一个lib目录(与战争相邻)。 A.jar在其中一场战争中的lib里面。
我从未在其他部署中看到过这个额外的lib文件夹,并且一直在搜索设置并且没有IDEA来自哪里。
所以我的问题是: 1)有谁知道生成root lib文件夹的是什么 但更重要的是...... 2)任何想法为什么我的课程都找不到......我认为这个额外的lib会以某种方式弄乱它,但A.jar是在C.war的web-inf / lib中。
答案 0 :(得分:0)
这称为EAR的library-directory
,包含可由所有模块访问的实用程序jar。它默认为'lib'但可以更改。
您应该使用zip工具编辑ear文件 -
答案 1 :(得分:0)
解决。这是发生了什么。在我不知道的情况下,一位同事实际上为耳朵项目创建了一个辅助lib目录,因为他计划在那个耳朵下部署第二次战争,并且想要一个共享的库位置。
我仍然不明白下一部分。出于某种原因,这个lib目录不只是添加到类路径,而且似乎取代了A.jar所在的web-inf / lib。由于他的项目也需要A.jar(最终),我满足于将A.jar生成到该文件夹中。但我确实想了解为什么web-inf / lib在创建这个替代lib时停止工作。