2009-11-07 324 views
22

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

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

换句话说,我有依赖于项目B(Java Project)的项目A(Web项目),项目B依赖于Spring Jars。当我在网上发布项目作为战争到JBoss唯一项目B被打包成JAR(无春瓶)

我知道我可以用蚂蚁做,我甚至有这样build.xml构建整个应用程序,但我认为日食也可以为我执行包装任务。

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

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

我在做什么错?

编辑:我使用Eclipse 3.5.1

+0

也可以考虑这样一个问题:http://stackoverflow.com/questions/1691553/java-web-project-referencing-another-java-project。 – 2009-11-07 15:03:54

+1

我见过这个问题,在Java EE模块依赖关系中添加依赖关系并不能解决我的问题 – LiorH 2009-11-07 15:06:35

+0

您可能还需要将Spring jars添加到Web项目的依赖关系列表中。它们可能不是传递性的。 – nitind 2014-05-10 05:38:13

回答

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

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

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

更新:我重读你的问题:

但由于某些原因,发布网页项目时,我得到的只是在JBoss中的lib目录Java项目罐子,没有它的依赖JAR(egSpring) 。

这是什么意思?你不应该把任何东西放在JBOSS/lib目录中。 WAR文件的重点在于它是一个包含所有依赖关系的自包含工件。如果你想写东西到JBOSS/lib目录下,你就错了。

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

+0

我有一个很好的ant脚本,问题在于开发时间,我想从eclipse打包并发布它(然后调试应用程序) – LiorH 2009-11-07 15:08:32

+0

Eclipse应该可以在没有Ant的情况下完成它。如果它不能,请获得一个真正的IDE并下载IntelliJ。它精美地管理所有这些东西。 – duffymo 2009-11-07 15:13:36

+0

你的更新是正确的,我的意思是war文件的lib目录(在WEB-INF下),当然不是JBoss lib目录。我修复了问题描述,谢谢。 – LiorH 2009-11-07 15:39:01

0

如果我理解正确,你的问题是,如果你使用一个项目而这又依赖于B项目你没有得到从项目B,而只有A的文物

的问题是,你的项目必须列出它在属性 - > Java EE模块依赖关系中所需的所有东西,这是与通常的项目导出不同的机制。你可能需要做一些实验。

2

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

如果目的就是要把依赖(阅读:JAR文件/项目/等等)其他项目进入当前项目的运行时类路径,那么只有这样行不通。您需要将其他项目配置为export其依赖关系。它由构建路径属性中的Order和Export选项卡完成。希望这可以帮助。

2

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

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

据我了解,用在编译时JAR在Eclipse,并确保它也可以在运行时在应用程序服务器,您可以:

  • 添加JAR到您的构建路径
  • 标记JAR作为出口EE模块依赖

如果你需要的是由你使用的是其他项目所需要的JAR的,我将亲自将它们列为构建路径中的显式依赖项,并将其添加到导出的模块依赖项中。

但是,不要把我按面值的答案,我偶然发现了这个职位,同时寻找我得到我的Eclipse项目NoClassDefFound错误的原因...;)

4

我知道这是在四年前,最后的职位,也许这个选项不可用,但今天,这里是为我工作:

  1. 进入Web项目 - >属性
  2. 部署大会
  3. 使用“添加”按钮,添加你的项目依赖
  4. 转到项目 - >作为项目你根据
  5. 属性
  6. 使用“添加”按钮添加项目的运行时库依赖关系
  7. Web Project-> Run As .. - >在服务器上运行,它为我工作

被警告,步骤4-6将意味着如果你使用eclipse来建立你的jar文件,它现在将包括你的依赖库在该jar。

感谢rodgarcialima帮助我获得第3步。

+0

嗨乔治,是否有任何其他方式来使被引用的项目库复制到Web项目? – 2014-06-22 22:29:23

+0

如何建立战争档案并需要其他项目包括? – Niamath 2016-11-01 15:50:44