Eclipse Web项目依赖项

时间:2009-11-07 15:01:43

标签: java eclipse java-ee web-project

这个问题是关于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中(没有弹簧罐)

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

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

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

我做错了什么?

编辑:我正在使用Eclipse 3.5.1

5 个答案:

答案 0 :(得分:49)

  1. 转到网站项目属性。
  2. 部署程序集(左)。
  3. 添加>选择项目>选择你的lib项目>如果未选中,请选中“将项目组装到Web应用程序的WEB-INF / lib文件夹中”>完成。
  4. Java构建路径(左)>项目标签>添加...>选择你的lib项目>行
  5. Java构建路径(左)> “订购和导出”选项卡>选择你的lib项目。
  6. 保存
  7. 现在可行。

答案 1 :(得分:2)

  

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

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

答案 2 :(得分:2)

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

Bug 312897 - Deployment feature doesn't deploy classpath dependencies.

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

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

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

但是当我在我的Eclipse项目中找到NoClassDefFound错误的原因时,我偶然发现了这篇文章时,不要接受我的答案......;)

答案 3 :(得分:0)

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

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

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

  

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

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

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

答案 4 :(得分:0)

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

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