Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Eclipse中部署程序集和J2EE模块依赖项之间的差异_Java_Eclipse_Jakarta Ee_Eclipse Indigo_Eclipse 3.5 - Fatal编程技术网

Java Eclipse中部署程序集和J2EE模块依赖项之间的差异

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。

当JavaEE开发人员使用Eclipse3.7Indigo时,有一种称为部署程序集的东西。我可以在google上找到它,并且理解它类似于J2EE模块依赖关系,在这里我们可以选择jar,它位于EAR文件夹或WEB-INF/lib中,以防战争。现在我的疑问是

我有一个JavaProject依赖项。我已经通过classpath变量添加了所有依赖JAR。现在,依赖项项目作为依赖项添加到我的Web项目TestWebProject。Web项目的编译是正确的,但在运行时我遇到了一个错误,因为找不到某个jar。我可以在依赖项的部署程序集中修复这个include 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
。不过,“部署程序集”配置更简单,也是推荐的方式

另见:

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


部署程序集—eclipse希望将此路径下的项目打包并作为.jar部署在web inf/lib文件夹中。因此,它在编译时和运行时都可用。如果项目没有部署在部署程序集中,那么代码只在编译时可用,eclipse不会捆绑它,并且在运行时依赖的项目对代码不可用

不知道为什么会这样,正确的步骤是将依赖项作为元素添加到TestWebProject的部署程序集中。你试过那样做吗?