我的项目基于Maven时遇到了这个奇怪的问题。我在Eclipse中创建了一个新的Maven项目,并启用了动态Web构面。但是现在在运行时抛出该异常ClassNotFoundException
是因为Maven依赖项未复制到WEB-INF/lib
目录中。我什至尝试在POM中添加“副本依赖项”部分,但没有帮助。
这里的某个人似乎已经以正确的方式解决了这个问题,但是我想他忘了提及解决方案了::(
我的项目基于Maven时遇到了这个奇怪的问题。我在Eclipse中创建了一个新的Maven项目,并启用了动态Web构面。但是现在在运行时抛出该异常ClassNotFoundException
是因为Maven依赖项未复制到WEB-INF/lib
目录中。我什至尝试在POM中添加“副本依赖项”部分,但没有帮助。
这里的某个人似乎已经以正确的方式解决了这个问题,但是我想他忘了提及解决方案了::(
Answers:
这与eclipse和m2eclipse无关,并且可以选择更好地支持-m2e-wtp。另外,您不需要复制依赖性。以下是一些可能的原因:
mvn package
(或右键单击> maven> package)并获取war文件- <packaging>
(在pom中)必须为war
provided
否则test
将不包含在归档文件中)<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
的org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER
条目。一旦库再次消失,该特定属性也消失。在本地文件历史记录中甚至可以看到该属性的出现和消失。
首先安装Maven Integration for Eclipse WTP(帮助-> Eclipse Marketplace)
然后在您的Web项目的pom.xml中添加:
<packaging>war</packaging>
之后,右键单击项目Maven-> Update Project,该项目将自动为您在Deployment Assembly中添加Maven依赖关系。
如果您调查部署并发现WEB-Inf / lib中没有Maven依赖项,那么如选择的答案所述,确保这些Maven依赖项在部署程序集中是至关重要的。
但是请警惕Eclipse,然后即使使用Maven更新也不刷新所有内容。如果清理,重建和重新部署,但仍然看不到lib文件夹正在填充,请尝试通过“服务器”>“添加和删除”将应用程序重新添加到服务器部署中。
这对我来说系统是畅通无阻的。
在Eclipse上,选择您的Web项目->右键单击->属性->部署程序集->添加-> Java构建路径条目-> Maven依赖关系
通过此步骤,完全发布后,maven库将包含在WEB-INF / lib中。