2011-08-18 66 views
7

我刚刚从Helios切换到Eclipse Indigo,并且在尝试运行带有WTP的Tomcat 6上启用Maven的Web项目时遇到了一些麻烦。Eclipse 3.7/Indigo m2e WTP集成依赖问题

我遇到了Tomcat没有看到Maven依赖关系的经典问题。在Helios中,解决方法是通过以下方式将Maven依赖项添加到部署程序集: 项目属性 - >部署程序集 - >添加'Java Build Path Entries' - > Maven Dependencies

不幸的是,'Java Build Path条目'没有被列出,只有'文件夹'和'项目'。我不确定这是故意的,还是我的设置有问题。

在试图除去外部因素的影响,我使用以下设置:

  • 新鲜安装的Eclipse靛蓝(苹果机)
  • 新鲜工作区
  • M2E WTP集成通过Eclipse卖场
  • 安装
  • 创建新的Maven项目
  • 添加一些maven依赖关系,加上一些代码来使用它们
  • C onvert项目刻面的形式
  • 添加 '动态Web模块' 小
  • 的Maven>更新项目配置
  • 添加到Tomcat 6服务器
  • 在服务器

运行在这一点上,我见获取有关我缺少的依赖关系的ClassNotFoundException。 如果我运行'mvn war:war'并在项目的部署程序集中包含组装好的'WEB-INF/lib'目录,那么当然依赖关系会被正确拾取 - 对于快速修复很不错,但并不理想。

我读过的有关类似问题的大多数问题都归结为缺少WTP集成模块,但这对我来说并不是问题。

我做错了什么?

+0

“新maven项目”的包装类型是jar还是war? – Raghuram

+0

包装是JAR - 我已经更换为WAR,服务器现在正确部署!发布这个答案,以便我可以将其标记为正确 - 谢谢。 – sebrichards

+0

发表评论为答复。 – Raghuram

回答

3

它看起来像new maven project的包装类型是jar。如果是这样,您可以将其更改为war并尝试。

1

这里讨论的是另一种解决方案: 固定。类路径文件

<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> 
1

右键单击项目

  1. 选择部署总成>单击添加

  2. 选择从弹出的窗口Java构建路径项,然后单击下一步

  3. 可以使用Ctrl键鼠标选择全部显示lib

之后,您将看到.classpath文件中的更改。

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

+1

每次运行Maven更新时,这些设置都会丢失。 m2e插件会覆盖这些设置,因此与处理启用Maven的Web应用程序时相比,它们几乎没有用处。 –