Eclipse Web项目依赖项

这个问题是关于Eclipse开发的,我试图在Eclipse中创建一个Web应用程序,问题是我没有将依赖关系jar放到已部署的存档中。

我创建了一个新的动态Web项目并将其链接到另一个Java项目。 Java项目引用了一些第三方jar(例如Spring jar),但出于某些原因,在发布Web项目时,我只获得了战争的lib目录中的Java项目jar,没有Java项目依赖项(例如Spring)。

换句话说,我有项目A(Web项目),它依赖于项目B(Java项目),项目B依赖于Spring jar。 当我将Web项目作为战争发布到JBoss时,只将项目B打包到jar中(没有弹簧jar)

我知道我可以用ant做到这一点,我甚至有这样的build.xml来构建整个应用程序,但我认为eclipse也可以为我执行打包任务。

我将Java项目添加到Web项目中的Java EE模块依赖项中。

我应该在Java项目构建路径属性中使用导出选项吗? 我是否应该将Java项目的依赖项添加到Web项目中?

我究竟做错了什么?

编辑 :我正在使用Eclipse 3.5.1

  1. 转到Web项目属性。
  2. 部署程序集(左)。
  3. 添加>选择项目>选择您的lib项目>选中“将项目组装到Web应用程序的WEB-INF / lib文件夹中”(如果未选中)>完成。
  4. Java构建路径(左)>项目选项卡>添加…>选择您的lib项目>确定
  5. Java构建路径(左)>订单和导出选项卡>选择您的lib项目。
  6. 保存
  7. 现在它有效。

我知道这是自上一篇文章以来的四年,也许这个选项当时不可用,但这里对我有用:

  1. 转到Web项目 – >属性
  2. 部署大会
  3. 使用“添加”按钮添加项目依赖项
  4. 转到项目 – >属性,以获取您所依赖的项目
  5. Deployment Assembly
  6. 使用“添加”按钮添加项目的运行时库依赖项
  7. Web项目 – >运行为..->在服务器上运行,它对我有用

请注意,步骤4-6将意味着如果您使用eclipse来构建jar文件,它现在将包含您jar中的依赖库。

感谢rodgarcialima帮助我进入第3步。

我将Java项目添加到Web项目中的Java EE模块依赖项中。

如果目的是将其他项目的依赖项(读取:JAR文件/项目/等)放入当前项目的运行时类路径中,那么只有这种方式不起作用。 您需要配置其他项目以导出其依赖项。 它由构建路径属性中的“订购和导出”选项卡完成。 希望这可以帮助。

另请注意Eclipse WTP上报告的此错误,即使您正确配置了所有内容,有时也会阻止将依赖项部署到WEB-INF / lib。 叹。

错误312897 – 部署function未部署类路径依赖项。

据我了解,要在Eclipse中编译时使用JAR并确保它在appserver中的运行时也可用,您:

  • 将JAR添加到构建路径
  • 将JAR标记为导出的EE模块依赖项

如果您需要正在使用的另一个项目所需的JAR,我会亲自将它们列为构建路径中的显式依赖项,并将这些依赖项添加到导出的模块依赖项中。

但是,当我在Eclipse项目中找到NoClassDefFound错误的原因时,我偶然发现了这篇文章,所以不要把我的答案看成是正面的…;)

您应该在部署之前将Web应用程序打包到WAR文件中。 必须有一种方法可以告诉Eclipse您希望将哪些JAR文件放在WEB-INF / lib目录中。 如果没有,请编写一个Ant build.xml来为您完成。

您不必修改环境或应用服务器中的任何类路径变量。 正确的方法是创建一个合适的WAR文件。

更新:我重新阅读你的问题:

但由于某些原因,在发布Web项目时,我只获得了JBoss的lib目录中的java项目jar,没有它的依赖jar(例如Spring)。

这是什么意思? 你不应该在JBOSS / lib目录中放任何东西。 WAR文件的重点在于它是一个包含所有依赖项的自包含工件。 如果您正在尝试将内容写入JBOSS / lib目录,那么您做错了。

WAR文件需要进入您设置的域。 无需更改应用服务器。

如果我理解正确的问题是,如果你使用项目A,而项目A又取决于项目B,你不会从项目B获得工件但只有A.

问题是您的项目必须列出属性中所需的所有内容 – > Java EE模块依赖项,这是与通常项目导出不同的机制。 您可能需要做一些实验。