2010-10-19 80 views
2

在Eclipse Java EE透视图中,如何将thridparty Jar添加到Utility Project?如何在Utilty Project中包含第三方库?

详细说明:在“普通”Java(非Java EE)项目中,有Referenced Libraries可以在其中放置JAR。在动态Web项目中,有Web App Libraries。在工程项目中,只有EAR库看起来不相关(当然,引用库在Java透视图中显示在包资源管理器中,但不在Java EE透视图中的项目资源管理器中显示)。我继续前进,并在我的Utility Project根目录下添加了一个/ lib目录,并在那里放置了一个jar(我忘了如果我是在Java Package透视图中还是在文件系统中这样做)。我将它添加到Java Build Path中,并且编译了所有内容,包括引用Utility Project的Dynamic Web项目。但是当我部署到Tomcat时,第三方jar中的类会得到ClassNotFoundException。

如何将第三方jar添加到实用工程中,使其作为Web应用程序的一部分进行部署?

回答

2

我回答过类似的东西。

Eclipse and How it Handles JARS -- Odd Case

在本质上,是构建时和运行时JAR依赖之间的差异。要包含在EAR/WAR文件中,您必须使用“部署程序集”面板。

+0

这似乎是正确的路径,但我没有看到部署汇编面板。我在Eclipse 3.5 ... – ykaganovich 2010-10-19 22:54:28

+1

好的,我使用http://wiki.eclipse.org/FAQ_How_do_I_upgrade_Eclipse%3F升级到Helios,并可以将Utility Project中的第三方jar添加到Dynamic Web Project Deployment Assembly中。如果动态Web项目从Utility Project自动获取设置,我更喜欢这样做吗?否则,这个解决方案的工作原理,我只需要混淆部署程序集设置** **每个**动态Web项目引用效用项目... – ykaganovich 2010-10-19 23:31:06

+0

+1,一个很好的问题。据我所知,这不是在WTP/Eclipse中实现的,我认为这是一个很好的理由。对于部署程序集,Eclipse需要知道公用程序模块的* runtime * classpath;这不一定与构建时类路径相同。例如:可以说你的工具项目需要Servlet接口进行编译。您需要将所需的JAR添加到您的实用程序的构建路径中,以便进行编译。大。但是将相同的JAR添加到webapp会有意义吗?绝对绝对_not_,因为JAR是由webapp的运行时提供的。 – Isaac 2010-10-20 02:46:11

0

我不知道确切地理解你的问题,但对你的项目,你可以简单地单击鼠标右键,在Properties选择Java Build path>Libraries,然后在第三方库列表中添加您的JAR。这会将你的jar添加到classpath项目中。

另一种方法是使用(丑)解决方案创建一个lib目录,将所有第三方库放入其中,然后将此目录添加到项目的类路径中(就像以前的解决方案一样,您可以添加Eclipse项目中的整个目录)。

最后的解决方案是让依赖管理的一个真正的构建系统,如Maven的,蚂蚁+艾维,摇篮责任......