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

cha*_*uru 9 java eclipse java-ee eclipse-3.5 eclipse-indigo

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

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

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

Bal*_*usC 16

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

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


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

因为这样Eclipse将自动生成项目的JAR文件并放入/WEB-INF/libWeb项目的部署.如果不这样做,那么在webapp的运行时期间JAR不可用,但仅在编译期间,Eclipse期望您已经构建并将其放置在运行时类路径中的任何其他位置,例如服务器自己的/lib.


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

手动构建/导出JAR并放入webapp自己/WEB-INF/lib或服务器自己的/lib.然而,"部署组件"配置更容易并且是推荐的方式.

也可以看看:


Kon*_*hik 5

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

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

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

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

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