Eclipse 3.7/Indigo m2e WTP集成依赖问题

7
我刚刚从Helios切换到Eclipse Indigo,尝试在带有WTP的Tomcat 6上运行一个启用了Maven的Web项目时遇到了一些问题。我遇到了Tomcat无法识别Maven依赖项的经典问题。在Helios中,解决方法是通过以下方式将Maven依赖项添加到“部署组件”中:项目属性->部署组件->添加“Java Build Path Entries”-> Maven Dependencies。不幸的是,“Java Build Path Entries”的选项没有被列出,只有“Folder”和“Project”。我不确定这是有意为之还是我的设置有问题。为了排除外部因素,我使用以下设置: - Eclipse Indigo(Mac)的全新安装 - 全新工作区 - 通过Eclipse Marketplace安装m2e WTP集成 - 创建新的Maven项目 - 添加一些Maven依赖项以及一些使用它们的代码 - 转换项目为faceted形式 - 添加“Dynamic Web Module”facet - Maven->更新项目配置 - 添加到Tomcat 6服务器 - 在服务器上运行
此时,我看到与我缺少的依赖项相关的ClassNotFoundException。如果我运行“mvn war:war”并在项目的“部署组件”中包含已组装的“WEB-INF/lib”目录,则当然会正确地选择依赖项-适合快速修复,但不理想。我读到的大多数关于类似问题的问题都与缺少WTP集成模块有关,但这对我来说似乎不是问题。我做错了什么吗?

“新的Maven项目”的打包类型是jar还是war? - Raghuram
打包方式从JAR改为WAR,现在服务器可以正确部署了!请将此作为答案发布,以便我标记为正确 - 谢谢。 - sebrichards
将评论发布为答案。 - Raghuram
4个回答

3

看起来新建maven项目的打包类型是jar。如果是这样,您可以将其更改为war并尝试。


1

右键点击项目

  1. 选择“部署程序集”> 点击“添加”

  2. 从弹出窗口中选择“Java构建路径条目”,然后点击“下一步”

  3. 使用Ctrl和鼠标选择所有显示的库

之后您将会在.classpath文件中看到更改。

在服务器选项卡中再次发布您的项目。


1
每次运行Maven更新时,这些设置都会丢失。m2e插件会覆盖这些设置,因此在处理启用了Maven的Web应用程序时,它们基本上是无用的... - Edy Bourne

1
这里有另一种解决方案: 修复了 .classpath 文件。
    <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
           <attributes>
-                   <attribute name="org.eclipse.jst.component.nondependency" value=""/>
+                   <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
            </attributes>
    </classpathentry>

0

另一个与WTP Tomcat相关的问题(如果打包已经是WAR但库未部署)在{{link1:Eclipse WTP部署Tomcat服务器依赖项的奇怪行为}}中得到了回答/讨论。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接