1

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

我也尝试了以下方法:但是,由于实用程序项目确实显示在我的 EAR 属性中的“Java EE 模块依赖项”中,我在我的 EAR 中选择了依赖项,发现该实用程序现在可用于我的网络项目,它显示为。例如,Utility.jar。最终,这似乎是预期的效果。但是,问题似乎与服务器的依赖关系解析有关。Jar 分发到EAR 并作为Utility.jar 添加到Web 的Manifest。但是 Utility 项目的依赖项并没有被包括在内(或其他影响)。注意:我的公司使用 Ivy 进行依赖关系解析。这里的问题是我收到NoClassDefFoundError的特定 Jars on 也包含在 Web 的依赖项中(即 Jar 存在于 WEB-INF/lib 目录中)。所以我不确定为什么,如果这是一个可行的解决方案,Jar 无法解决来自 Web 类加载器的依赖关系。

另外值得一提的是,Utility 项目已添加到Web 项目的“构建路径”的“项目”选项卡中;因此,我没有收到任何编译错误。

我将继续深入研究并尝试找到解决方案,但在此过程中我将不胜感激任何帮助或指导。

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


解决方案发布在下面

对于为我研究此问​​题的任何人,我感谢您的宝贵时间。希望这将有助于在路上遇到类似问题的人。

真诚的,比兹

4

2 回答 2

0

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

Eclipse Java EE 生态系统设计过度。我强烈怀疑这不是 Eclipse 本身从头开始开发的,而是直接取自 IBM 的商业 Eclipse 产品之一。这是否是一个好主意值得讨论。

于 2011-06-09T18:44:44.477 回答
0

之前,我无法在 Web 项目的属性 > 'Java EE Module Dependencies' > 'Web Libraries' 中检查 Utility 项目。我不确定为什么。模块出现了,但是当我检查它时,单击“应用”和“好的”,当我重新打开属性时,模块未被选中。所以我手动将依赖项添加到 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>

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

于 2011-08-18T13:04:23.260 回答