首页 文章

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

提问于
浏览
9

使用Eclipse 3.7 Indigo for Java EE Developers时,会出现一些名为 Deployment Assembly 的内容 . 我可以在google上找到它并且明白它类似于 J2EE Module dependencies 在哪里我们可以选择jar并且在WAR的情况下它位于EAR文件夹或WEB-INF / lib中 . 现在我怀疑的是,

我有一个JavaProject Dependencies . 我已经通过classpath变量添加了所有依赖的Jars . 现在 Dependencies 项目被添加为我的Web项目 TestWebProject 的依赖项 . Web项目的编译是正确的,但在运行时我得到一个错误,因为找不到一些jar . 我可以在 Dependencies Project的部署程序集中修复这个包含jar,这是一个独立的项目 .

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

3 回答

  • 16

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

    在使用Eclipse 3.5之前,它被称为“J2EE模块依赖项” . 在该版本之后,它被重命名为“部署程序集” . 但是在Java EE Web项目中它实际上是相同的 .


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

    因为这样Eclipse将自动生成项目的JAR文件并放入Web项目的 /WEB-INF/lib 's deployment. If you don' t这样做,JAR不是't available during webapp'的运行时,但仅在编译期间,Eclipse期望您've already built and placed it anywhere else in runtime classpath, e.g. server'拥有 /lib .


    如果我没有这个部署程序集,怎么能修复它?

    手动构建/导出JAR并放入webapp自己的 /WEB-INF/lib 或服务器自己的 /lib . 但是,"Deployment Assembly"配置更容易,也是推荐的方式 .

    另见:

  • 1

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

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

    “类路径条目[某事物]将不会被导出或发布......”

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

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

  • 5

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

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

相关问题