Java Eclipse中部署程序集和J2EE模块依赖项之间的差异
当JavaEE开发人员使用Eclipse3.7Indigo时,有一种称为部署程序集的东西。我可以在google上找到它,并且理解它类似于J2EE模块依赖关系,在这里我们可以选择jar,它位于EAR文件夹或WEB-INF/lib中,以防战争。现在我的疑问是 我有一个JavaProject依赖项。我已经通过classpath变量添加了所有依赖JAR。现在,依赖项项目作为依赖项添加到我的Web项目TestWebProject。Web项目的编译是正确的,但在运行时我遇到了一个错误,因为找不到某个jar。我可以在依赖项的部署程序集中修复这个include jar,它是一个独立的项目Java Eclipse中部署程序集和J2EE模块依赖项之间的差异,java,eclipse,jakarta-ee,eclipse-indigo,eclipse-3.5,Java,Eclipse,Jakarta Ee,Eclipse Indigo,Eclipse 3.5,当JavaEE开发人员使用Eclipse3.7Indigo时,有一种称为部署程序集的东西。我可以在google上找到它,并且理解它类似于J2EE模块依赖关系,在这里我们可以选择jar,它位于EAR文件夹或WEB-INF/lib中,以防战争。现在我的疑问是 我有一个JavaProject依赖项。我已经通过classpath变量添加了所有依赖JAR。现在,依赖项项目作为依赖项添加到我的Web项目TestWebProject。Web项目的编译是正确的,但在运行时我遇到了一个错误,因为找不到某个jar。
问题是,为什么我必须在部署程序集中修复jar,因为,首先,它是一个独立的项目,其次,如果我没有这个部署程序集,如何修复它?在组装WAR时,Eclipse不能仅仅通过查看构建路径依赖项来判断它们是否应该捆绑在WAR的WEB-INF/lib目录中,或者它们是否是您希望在服务器类路径上可用的。需要额外的元数据来区分这些情况 如果查看problems(问题)视图,您会看到许多类似以下内容的警告: “将不会导出或发布类路径条目[某些内容…” 右键单击这些并选择“快速修复”。您将看到一个包含可用修复程序的对话框。其中一个会说“将关联的类路径条目标记为发布/导出依赖项…”。使用该选项 以上内容将对Java项目的.classpath文件进行轻微更改,以标记要包含在程序集中的依赖项。您可以通过导出WAR文件并检查WEB-INF/lib文件夹的内容来进行测试,而无需运行 我可以在google上找到它,并且理解它类似于J2EE模块依赖项 在使用Eclipse3.5之前,它一直被称为“J2EE模块依赖项”。在该版本之后,它被重命名为“部署程序集”。但在JavaEEWeb项目中,情况实际上是一样的
问题是,既然jar是一个独立的项目,为什么我必须在部署程序集中修复它 因为这样Eclipse将自动构建项目的JAR文件,并将其放入WEB项目部署的
/WEB-INF/lib
。如果不这样做,JAR在webapp运行时不可用,但仅在compiletime期间可用,Eclipse希望您已经构建并将其放置在运行时类路径中的任何其他位置,例如服务器自己的/lib
如果没有此部署程序集,如何修复此问题 手动构建/导出JAR并放入webapp自己的
/WEB-INF/lib
或服务器自己的/lib
。不过,“部署程序集”配置更简单,也是推荐的方式
另见:
部署程序集—eclipse希望将此路径下的项目打包并作为.jar部署在web inf/lib文件夹中。因此,它在编译时和运行时都可用。如果项目没有部署在部署程序集中,那么代码只在编译时可用,eclipse不会捆绑它,并且在运行时依赖的项目对代码不可用 不知道为什么会这样,正确的步骤是将依赖项作为元素添加到TestWebProject的部署程序集中。你试过那样做吗?