Tomcat对Eclipse中其他项目中的类抛出ClassNotFoundException异常

23

我有一个Eclipse项目结构,类似于这样:

eclipse
    project a
    project b
所有这些项目都是Maven项目。项目B是一个Eclipse WTP项目,包含Project A作为依赖项。我正在使用m2eclipse插件。
当我在Eclipse中将项目B部署到Tomcat时,它总是会抛出错误,说找不到来自项目A的类。我唯一能解决这个问题的方法是在Eclipse中关闭项目A并执行mvn install命令,这样项目A就像任何其他依赖项一样被处理。
我希望不必每次对项目A进行更改(目前相当频繁)时都需要打开和关闭它。
我尝试将Project A添加到Project B的Build Path中,但似乎行不通。同样,在Eclipse中关闭该项目后,它才像普通的Maven依赖项一样工作。
请问有人有什么建议吗?非常感谢。
6个回答

76
你需要做的是:
  1. 在Eclipse中选择菜单栏Window > Show View > Servers, 打开名为Servers的选项卡
  2. 在Servers中,双击你想要的服务器
  3. 这个操作应该会打开一个标题为Overview的窗口,并且在选项卡中显示你选择的Server
  4. 在这个窗口中选择:Open launch configuration, 然后点击链接
  5. 在Edit Configuration窗口中,选择名为Classpath的选项卡
  6. 在ClassPath文本框中,选择User Entries这一行
  7. 现在点击右边的按钮:Add Projects
  8. 在弹出的Project Selection窗口中选择你想要服务器查找的外部项目
  9. 通过适当地点击Apply和OK按钮关闭这些窗口
  10. 在Overview窗口中重启你的服务器
你应该准备好了。这实际上只是一个两分钟的练习。祝你好运。

谢谢,这太棒了。 - Thomas Ruiz
这个可行。我做这件事时感到了很多程序员的内疚,但它确实可行。也许有一天m2e会自动处理项目依赖项的部署。 - Sharky
最终这个解决方案对我来说起作用了,我的问题和maven依赖项类似,非常感谢! - mjs
这对我非常有帮助!谢谢。 - Tariq M Nasim

35
如果您进入项目属性,选择“部署装配”,点击“添加...”并选择“项目”,您就可以添加相关的项目,这个问题就会得到解决。

2
Jalkin的解决方案与运行配置也可行,但这个方法看起来更清晰,谢谢。 - amoebe
2
未来的读者,如果这个修复方法对你不起作用,请不要疯掉。它对我也没用。 :-( - Sharky
三年后,Eclipse Luna 仍然存在这个问题。这真是奇怪,因为我过去已经添加了项目模块,没有出现任何问题,但是对于某些人来说,最后一个模块添加失败了。我不得不使用“添加=>文件夹”,但它的效果相同。谢谢! - Jeff
我会说这是我一直在寻找的解决方案。Web模块和EJB模块可以独立部署(无需EAR)。 - Khanh Hua

5

Tomcat无法找到您的类的原因是Eclipse中的项目依赖未被Tomcat看到。为了解决这个问题,您可以将项目A的bin文件夹添加到从项目B运行的应用程序的Tomcat类路径中。


5

右键单击已添加到容器服务器的Web项目,选择Maven,然后选择禁用工作区分辨率。 然后,您的依赖项项目将开始显示为像其他依赖项一样的jar文件。

右键单击Web项目--> Maven--> 禁用工作区分辨率。


3
这个方法可行(已测试过)。但缺点是每次“项目a”有更改,您都需要在其上运行“mvn install”,因为“项目b”现在依赖于您的存储库中的构件。 - Sharky

2

0
简单的方法:

运行 -> 运行配置... -> 类路径


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