gpt4 book ai didi

eclipse - Eclipse WTP 中的传递项目依赖项

转载 作者:行者123 更新时间:2023-12-02 12:13:09 25 4
gpt4 key购买 nike

我在 Eclipse 3.7.2 中创建了一堆项目。让我们给其中一些命名:

  • W(动态网络项目)
  • A(某个库)
  • B(一个包含许多常用内容的库,也被其他项目使用)

项目 A 依赖于项目 B,因此 B 位于 A 的构建路径中。项目 W 依赖于项目 A,因此我将 A 添加为 W 中的部署程序集。

当我从 Eclipse 中导出 WAR 时,仅 A 的 JAR 文件会添加到 WEB-INF/lib 中。 Eclipse 显示以下警告:

Classpath entry /B will not be exported or published. Runtime ClassNotFoundExceptions may result.

警告是正确的。我在运行时收到 ClassNotFoundExceptions。当然,Eclipse 为警告提供了一个快速修复,即“将关联的原始类路径条目标记为发布/导出依赖项”。但是,这并不能解决我的问题。 B 仍未与 W 一起部署。

我尝试手动将 B 添加为 A 中的部署程序集。这包括 A.jar 中的 B.jar,这并不是我真正想要的,但我仍然得到 ClassNotFoundExceptions。

唯一有效的方法是在 W 中手动添加 B 作为部署程序集。Eclipse 仍然显示上面的警告,但运行时异常消失了。

我是否遗漏了什么,或者这真的是实现此功能的唯一方法吗?

最佳答案

为了使 Eclipse 的“导出/Web/WAR 文件”工作,您必须使项目“b”出现在“Web 应用程序库”容器中。

您可以使用项目属性中的“部署程序集”页面编辑部署配置,并在其中添加项目“b”:

deployment assembly

或者,您可以在 /w/.settings/org.eclipse.wst.common.component 打开配置文件并手动添加对项目“b”的引用:

<?xml version="1.0" encoding="UTF-8"?>
<project-modules id="moduleCoreId" project-version="1.5.0">
<wb-module deploy-name="w">
<wb-resource deploy-path="/" source-path="/WebContent" tag="defaultRootSource"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src"/>
<dependent-module archiveName="a.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/a/a">
<dependency-type>uses</dependency-type>
</dependent-module>
<dependent-module archiveName="b.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/b/b">
<dependency-type>uses</dependency-type>
</dependent-module>
<property name="context-root" value="w"/>
<property name="java-output-path" value="/w/build/classes"/>
</wb-module>
</project-modules>

完成后,您将在“Web App Libraries”类路径容器中看到项目“b”,导出到 WAR 文件也会将 b.jar 添加到 WEB-INF/lib 中。

关于eclipse - Eclipse WTP 中的传递项目依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10709780/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com