Java Tomcat为其他打开的eclipse项目中的类抛出ClassNotFound异常

Java Tomcat为其他打开的eclipse项目中的类抛出ClassNotFound异常,java,eclipse,tomcat,m2eclipse,classnotfoundexception,Java,Eclipse,Tomcat,M2eclipse,Classnotfoundexception,我的eclipse项目结构如下所示: eclipse project a project b 所有这些项目都是Maven项目。项目B是一个EclipseWTP项目,包含项目A作为依赖项。我正在使用m2eclipse插件 当我将项目B部署到Tomcat(全部来自Eclipse)时,它总是抛出错误,说它找不到项目A中的类。解决这一问题的唯一方法是在Eclipse中关闭项目A并执行mvn安装命令,因此在这一点上,项目A被视为与任何其他依赖项一样 我不希望每次对项目A进行更改时都必须重

我的eclipse项目结构如下所示:

eclipse
    project a
    project b
所有这些项目都是Maven项目。项目B是一个EclipseWTP项目,包含项目A作为依赖项。我正在使用m2eclipse插件

当我将项目B部署到Tomcat(全部来自Eclipse)时,它总是抛出错误,说它找不到项目A中的类。解决这一问题的唯一方法是在Eclipse中关闭项目A并执行mvn安装命令,因此在这一点上,项目A被视为与任何其他依赖项一样

我不希望每次对项目A进行更改时都必须重新打开然后关闭它(这在这个阶段非常频繁)

我已经尝试过将项目A添加到项目B的构建路径中,但是这似乎不起作用。同样,只有在eclipse中关闭项目,它才能工作,因此它被视为正常的maven依赖项

仅供参考,我使用的是太阳神版的Eclipse。项目B是一个Spring项目,所以Tomcat在导入所有bean时自然会失败


有人有什么建议吗?非常感谢。

tomcat找不到您的类的原因是tomcat看不到eclipse中的项目依赖关系。要解决此问题,您可以将项目a的bin文件夹添加到从项目b运行的应用程序的tomcat类路径。

您是否安装了了解WTP的m2eclipse扩展?如果没有它,m2e将无法在WTP项目中正常工作。见此:


如果您转到项目属性,选择项目“部署程序集”,单击“添加…”并选择“项目”,您可以添加依赖项目,问题应该得到解决。

您需要做的是:

  • 在Eclipse中,转到窗口>显示视图>服务器>并打开名为服务器的选项卡
  • 在服务器中,双击所需的服务器
  • 此操作将打开一个名为Overview(概览)的窗口,并在选项卡中显示所选服务器
  • 在此窗口中选择:打开启动配置,然后单击链接
  • 在编辑配置窗口中,选择名为Classpath的选项卡
  • 在类路径文本框中,选择行:用户条目
  • 现在按下右边名为“添加项目”的按钮
  • 在生成的项目选择窗口中,通过单击选择服务器要查找的外部项目
  • 通过单击应用关闭这些窗口,然后在处理堆栈时根据需要单击确定
  • 在概览窗口中重新启动服务器

  • 你应该准备好出发了。这实际上只是一个2分钟的练习。祝您好运

    右键单击添加到容器服务器的web项目,选择Maven,然后选择Disable Workspace Resolution。然后,您的依赖项项目将开始像任何其他依赖项一样显示为jar

    右键单击WebProject-->Maven-->禁用工作区解析

    简单方法:


    Run->Run配置…->类路径

    这正是我想要的。非常感谢。谢谢你,这太棒了。这很有效。我觉得做这件事有很多程序员的内疚感,但它确实有效。也许有一天m2e会自动处理项目依赖项的部署。最后,这个解决方案对我解决了maven依赖项的类似问题,非常感谢!这对我帮助很大!谢谢。Jalkin的运行配置解决方案也很有效,但这看起来更干净了,谢谢。未来的读者,如果这个修复方案不适用于您,请不要发疯。这对我也不管用-(3年多之后,这在Eclipse Luna中仍然是一个问题。奇怪的是,我过去在我的项目中添加了模块,但没有出现任何问题,但对于一些人来说,最后的模块添加没有起作用。我不得不使用add=>Folder,但它起到了同样的作用。谢谢!我想说这是我一直在寻找的解决方案。Web模块和EJB模块可以在Windows中部署。)ependency(没有EAR)。这也可以工作(刚刚测试过)。它的缺点是每次“项目a”发生变化时,都需要在“项目b”上运行
    mvn install
    ,因为“项目b”现在取决于您的repo中的工件。