Eclipse 中的部署程序集和 J2EE 模块依赖关系之间的区别



当使用 Eclipse 3.7 Indigo for Java EE Developers 时,有一种叫做 Deployment Assembly 的东西。我可以在谷歌上找到并理解它类似于 J2EE 模块依赖项,我们可以在其中选择 jar,并且在 ARAR 文件夹中或在 WAR 的情况下位于 WEB-INF/lib 中。现在我的疑问是,

我有一个JavaProject依赖项。我已经通过类路径变量添加了所有依赖的 Jar。现在,依赖项项目已作为依赖项添加到我的 Web 项目测试WebProject中。Web 项目的编译是正确的,但在运行时我收到错误,因为找不到一些 jar。我可以在依赖项项目的部署程序集中解决此问题,这是一个独立的项目。

问题是,为什么我必须修复部署程序集中的jar,因为,首先,它是一个独立的项目,其次是如果我没有这个部署程序集,如何修复?

我可以在谷歌上找到并理解它类似于 J2EE 模块依赖项

在Eclipse 3.5之前,它被称为"J2EE Module Dependencies"。在该版本之后,它被重命名为"部署程序集"。但是在Java EE Web项目的情况下,它实际上是相同的。

<小时 />

问题是,为什么我必须在部署程序集中修复 jar,因为它是一个独立的项目

因为这样 Eclipse 将自动构建项目的 JAR 文件,并放入 Web 项目部署的/WEB-INF/lib。如果你不这样做,JAR 在 webapp 的运行时不可用,而仅在编译时可用,Eclipse 希望你已经构建并放置在运行时类路径中的其他任何位置,例如服务器自己的/lib

<小时 />

如果我没有这个部署程序集,如何解决这个问题?

手动构建/导出 JAR 并放入 Web 应用程序自己的/WEB-INF/lib或服务器自己的/lib。但是,"部署程序集"配置更简单,并且是推荐的方法。

另请参阅:

  • 业务逻辑层在 Servlet 和 JSP 中

在组装 WAR 时,Eclipse 无法仅通过查看构建路径依赖项来判断它们是否应该捆绑在 WAR 的 WEB-INF/lib 目录中,或者它们是否是您希望在服务器类路径上可用的东西。需要额外的元数据来区分这些情况。

如果您查看问题视图,您应该会看到许多如下所示的警告:

"类路径条目 [某些内容] 将不会导出或发布..."

右键单击这些并选择"快速修复"。您将看到一个包含可用修复程序的对话框。其中一个会说"将关联的类路径条目标记为发布/导出依赖项..."。使用该选项。

以上内容将对 Java 项目的 .classpath 文件稍作更改,以标记要包含在程序集中的依赖项。您可以通过导出 WAR 文件并检查 WEB-INF/lib 文件夹的内容来测试而不运行。

构建路径 - 直接将 jar 放在这里,它将可用于代码运行时和编译时。

部署程序集 - eclipse 期望此路径下的项目捆绑并作为.jar部署在 web-inf/lib 文件夹中。以便它可用于编译时和运行时。如果项目未部署在部署程序集中,则代码仅在编译时可用,eclipse 不会捆绑它,并且在运行时相关项目对代码不可用。

最新更新