70

我在使我的项目基于 Maven 时遇到了这个奇怪的问题。我在 Eclipse 中创建了一个新的Maven项目并启用了动态 Web 构面。但是现在在运行时它会抛出ClassNotFoundException,因为 Maven 依赖项没有复制到WEB-INF/lib目录。我什至尝试在 POM 中添加copy-dependencies部分,但没有帮助。

这里有人似乎以正确的方式解决了这个问题,但我猜他忘了提到解决方案::(

4

9 回答 9

175

这应该与 eclipse 和 m2eclipse 无关,并且可以选择以获得更好的支持 - m2e-wtp。此外,您不需要复制依赖项。以下是一些可能的原因:

  • 您应该调用mvn package(或右键单击> maven > 包)并获取一个war文件- <packaging>(在pom中)必须是war
  • 您的依赖项应具有默认范围(如果它们是providedtest它们将不包含在存档中)
  • 如果您在 eclipse 中的服务器上将项目作为动态 Web 项目运行,那么您应该打开项目属性(右键单击 > 属性)并选择“部署程序集”。单击“添加”,选择“构建路径条目”,然后选择“maven依赖项”。这将指示 WTP 将 maven 依赖项发送到服务器目录。
于 2011-05-21T18:52:17.967 回答
13

首先安装Maven Integration For Eclipse WTP (Help->Eclipse Marketplace)

然后在你的 web 项目的 pom.xml 中添加:

    <packaging>war</packaging>

之后,只需右键单击项目,Maven -> 更新项目,它应该会自动在部署程序集中为您添加 Maven 依赖项。

于 2012-08-21T12:25:57.840 回答
5

右键单击项目 > Maven > 更新 Maven 项目 > OK 为我修复它

于 2015-07-06T07:47:30.777 回答
4

检查项目的部署程序集属性。我看到一些mvn eclipse:eclipse生成的 Eclipse 项目有时会将资产部署到错误的位置。据我所知,新的部署程序集与早期版本的 Eclipse 3.6 (Helios) 存在一些问题。

于 2011-05-21T18:35:36.900 回答
3

我刚刚做了 maven -> update project 为我工作。

于 2014-12-23T10:27:27.613 回答
0

你想使用复制依赖插件

看到这篇文章和文档

于 2011-05-21T18:39:00.600 回答
0

如果您查看您的部署并发现 WEB-Inf/lib 没有您的 Maven 依赖项,那么确保这些 Maven 依赖项在您的部署程序集中至关重要,正如所选答案中提到的那样。

但是要小心 Eclipse,然后即使使用 Maven 更新也不会刷新所有内容。如果您清理、重建和重新部署,但仍然没有看到 lib 文件夹被填充,请尝试通过 Servers>Add and Remove 删除应用程序并将其重新添加到服务器部署中。

这为我疏通了系统。

于 2015-10-08T19:36:24.617 回答
0

右键单击项目 -> 部署程序集:查看是否有 Maven 依赖项和所有其他项。如果没有,右键单击项目 -> Maven -> 启用工作区解析

(也许然后是 Maven -> 更新项目,但然后再次查看“部署程序集”,看看你有什么。)这为我解决了(终于!)。

于 2018-02-23T20:27:41.383 回答
0

在 Eclipse 上,选择您的 Web 项目 -> 右键单击​​ -> 属性 -> 部署程序集 -> 添加 -> Java 构建路径条目 -> Maven 依赖项

通过此步骤,完整发布时,Maven 库将包含在 WEB-INF/lib 中。

于 2019-12-02T14:40:01.867 回答