【问题标题】:Deploying libraries in Web Fragment projects in Eclipse在 Eclipse 中的 Web 片段项目中部署库
【发布时间】:2013-07-03 15:36:14
【问题描述】:

使用 Eclipse 4.2 我正在尝试部署一个包含在主 Dynamic Web 项目和 Web Fragment 项目中的 Web 应用程序。

Web Fragment 需要一些主项目在编译时不需要的 jar 库(lib1.jar 和 lib2.jar)。要添加这些库,我有两个选择:

  1. 将它们放在 Java 构建路径中,每个都有一个条目
  2. 将它们放在 src 文件夹下的 WEB-INF/lib 文件夹中,并在 Java 构建路径中添加一个“Web App Libraries”库

在这两种情况下,我都会在 Java 构建路径的“订购和导出”选项卡中将库标记为导出

当我发布使用 Tomcat 7.0.041 的相应服务器或导出战争时,我以以下场景结束:

  1. 在情况 1 中没有库(lib1.jar 和 lib2.jar)被复制到主 WEB-INF/lib 文件夹
  2. 在情况 2 中,两个库都被复制到 Web 片段生成的 jar 文件的 WEB-INF/lib 文件夹中,而该 jar 文件又被复制到主 WEB-INF/lib 文件夹中。

在启动服务器时,对于驻留在 lib1.jar 或 lib2.jar 中的类,在两种情况下都会引发 ClassNotFoundException。

有什么方法可以部署 Web Fragment 项目所需的库,而无需手动将它们放入主项目中?

【问题讨论】:

  • 我可以建议你看看Maven吗?如果您以前没有做过设置,那将是一些工作,但是您不必再担心依赖关系 :-)

标签: eclipse jar war eclipse-wtp


【解决方案1】:

我刚刚找到了我的问题的两步答案。

在上面的场景#1中,您必须转到Web Fragment项目属性,然后转到Deployment Assembly,按“添加”按钮,选择Java Build Path Entries并选择您想要包含的所有库在服务器的WEB-INF/lib目录下。

一旦完成,所选的库将在发布服务器或导出战争时复制到 WEB-INF/lib。

【讨论】:

  • 有趣的是,部署程序集中的/指的是生成的JAR文件的根目录,它会放在“WEB-INF/lib”中,添加构建路径条目时,配置的位置是../,即“JAR 旁边”,即WEB-INF/lib。这是有道理的,但非常不直观。
  • 注意:无法手动将部署路径设置为../,甚至../../ 以向Web 应用程序的根目录添加内容。如果手动调整配置文件,Eclipse (Neon.3) 会崩溃并出现 StackOverflowException。
猜你喜欢
  • 2015-03-12
  • 2011-10-02
  • 2014-10-07
  • 2023-03-31
  • 2012-09-01
  • 2011-06-07
  • 1970-01-01
  • 1970-01-01
  • 2012-02-27
相关资源
最近更新 更多