澄清和解决'Java EE模块依赖'

时间:2011-06-09 16:33:40

标签: eclipse ivy java-ee-5 eclipse-3.4 ivyde

我正在尝试在实用程序项目中设置 web 项目的依赖关系。我的实用程序项目使用'Utility Module'项目构面和'Java 5'进行设置。当我在我的Web项目的属性中选择'Java EE Module Dependencies'时,我的实用程序项目不会出现。我相信这是问题所在,我很乐意解决它!

我也尝试了以下内容: 但是,由于Utility项目确实显示在我的EAR属性中的'Java EE Module Dependencies'中,因此我在EAR中选择了依赖项,发现该实用程序现在可用于我的Web项目,它显示为。例如,Utility.jar。最终,这个似乎是理想的效果。但是,问题似乎与服务器的依赖项解析有关。 Jar被分发到EAR并添加到Web的Manifest中,即Utility.jar。但是实用程序项目的依赖项并没有包括在内(或者那些影响的东西)。注意:我的公司使用Ivy进行依赖性解析。这里的问题是我正在接收 NoClassDefFoundError 的特定Jar也包含在Web的依赖项中(即,Jar存在于WEB-INF / lib目录中)。所以我不确定为什么,如果这是一个可行的解决方案,Jar无法从Web的类加载器解析依赖。

另外值得一提的是,Utility项目已添加到Web项目的'Build Path''Project'选项卡中;因此,我没有收到任何编译错误。

我将继续深入挖掘并尝试寻找解决方案,但我将非常感谢您提供的任何帮助或指导。

以下是我发现的与我详尽研究相关的一些资源:


在下方发布的解决方案

对于那些正在为我研究此问​​题的人,我感谢你的时间。希望这可以帮助那些遇到类似问题的人。

此致 Beez

2 个答案:

答案 0 :(得分:0)

Web项目不能具有实用程序项依赖性。这仅适用于EAR文件,因为这是WAR文件中不存在的EAR结构。

Eclipse Java EE生态系统非常过度设计。我强烈怀疑这不是由Eclipse本身开发的,而是直接来自IBM的一个商业Eclipse产品。讨论这是否是一个好主意是开放的。

答案 1 :(得分:0)

之前,我无法检查Web项目属性中的Utility项目> 'Java EE模块依赖关系'> '网络图书馆'。我不知道为什么。该模块出现但是当我检查它时,单击'apply'和'okay',当我重新打开属性模块未选中时。所以我手动将依赖项添加到org.eclipse.wst.common.component文件中:

<dependent-module archiveName="Utility.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/Utility/Utility">
    <dependency-type>uses</dependency-type>
</dependent-module>

这完全解决了这个问题,我的应用程序功能齐全!