Eclipse中部署程序集和J2EE模块依赖项之间的区别
使用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,因为,首先,它是一个独立项目,第二个是如果我没有这个部署程序集,怎么能修复它?
我可以在谷歌上找到它,并了解它类似于J2EE模块依赖项
在使用Eclipse 3.5之前,它被称为“J2EE模块依赖项”。 在该版本之后,它被重命名为“部署程序集”。 但是在Java EE Web项目中它实际上是相同的。
问题是,为什么我必须在部署程序集中修复jar,因为它是一个独立的项目
因为这样Eclipse将自动生成项目的JAR文件并放入Web项目部署的/WEB-INF/lib
中。 如果不这样做,则在webapp的运行时期间JAR不可用,但仅在编译期间,Eclipse期望您已经构建并将其放置在运行时类路径中的任何其他位置,例如服务器自己的/lib
。
如果我没有这个部署程序集,怎么能修复它?
手动构建/导出JAR并放入webapp自己的/WEB-INF/lib
或服务器自己的/lib
。 然而,“部署组件”配置更容易并且是推荐的方式。
也可以看看:
- 业务逻辑层在Servlet和JSP中
在组装WAR时,Eclipse无法通过查看构建路径依赖关系来判断它们是否应该捆绑在WAR的WEB-INF / lib目录中,或者它们是否是您希望在服务器类路径上可用的东西。 需要额外的元数据来区分这些情况。
如果您查看问题视图,您应该看到许多警告,如下所示:
“类路径条目[某事物]将不会被导出或发布……”
右键单击这些并选择“快速修复”。 您将看到一个包含可用修复的对话框。 其中一个会说“将关联的类路径条目标记为发布/导出依赖…”。 使用该选项。
以上内容将对您的Java项目的.classpath文件进行略微更改,以标记包含在程序集中的依赖项。 您可以通过导出WAR文件并检查WEB-INF / lib文件夹的内容来测试而不运行。
构建路径 – 直接将jar放在这里,它可用于代码运行时和编译时。
部署程序集 – eclipse期望将此路径下的项目捆绑并在web-inf / lib文件夹中部署为.jar。 因此它可用于编译时和运行时。 如果项目未部署在部署程序集中,则代码仅在编译时可用,eclipse不会捆绑它,并且在运行时依赖项目不可用于代码。
- 如何将android电子邮件源代码导入eclipse项目?
- 如何用图像中的蓝色半透明替换我的Android应用程序谷歌地图半径圆?
- 无法从命令行运行jar文件:“no main manifest attribute”
- 发生JNI错误,请检查您的安装并在Eclipse x86 Windows 8.1中重试
- 使用Eclipse将JavaFX Project导出到runnable
- Java – 关闭扫描程序和资源泄漏
- 在eclipse中导出可执行/可运行的jar
- 调试时如何直接在IDE中查看其他对象的私有字段?
- 如何使用Package类的getImplementationVersion()方法从JAR的清单中获取包版本