无法将我的Spring Web项目部署到Eclipse内部Tomcat服务器。(Tomcat启动时出现java.lang.ClassNotFoundException)

7
当我使用外部的Tomcat时一切都很好。但是我需要在内部Eclipse Tomcat服务器上部署我的项目,以便能够使用DCEVM类热交换。 当我尝试从Eclipse中启动Tomcat服务器时,它提示找不到我在Spring安全配置文件中提到的其中一个服务类作为bean。 我还尝试将项目添加到Tomcat类路径中,但这并没有解决我的问题。
更新: 我发现问题是因为当我将Web项目部署到Eclipse Tomcat服务器时,没有将.class文件复制到:
C:\Users\Meysam\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\villapweb\WEB-INF\classes

实际上,这个文件夹包含了我的src/java/main包结构,但其中没有任何.class文件被复制。
尽管lib文件夹没问题(例如,maven的所有依赖项和其他东西都被复制到了应该放置的位置),但我认为m2e-wtp插件可能出了问题。我不知道原因!
顺便说一下,我正在使用Eclipse 4.3。
已解决:
我通过以下步骤解决了这个问题:
1. 在Eclipse中右键单击项目 > 属性 > 项目面板。
2. 在右侧面板中选择运行时,并选择目标服务器。应用并确定。
3. 在服务器模块列表中,右键单击项目模块并单击清理模块工作目录。
4. 右键单击服务器本身,可以一个接一个地清除服务器和Tomcat工作目录。
5. 如果那样做不起作用,请尝试项目 > 清理,并在项目菜单项下切换“自动构建”选项。
完成!现在Tomcat将所有的.class文件都复制到目标服务器中,并且在Tomcat启动时不会出现ClassNotFound异常。
4个回答

8

[复制到答案部分]

我按照以下步骤解决了这个问题:

  1. 在Eclipse中右键单击项目 > 属性 > 项目面板
  2. 在右侧面板中选择运行时并选择您的目标服务器。应用和确定。
  3. 在服务器模块列表中
  4. 右键单击项目模块并单击清除模块工作目录,然后右键单击服务器本身并可以依次清除服务器和Tomcat工作目录
  5. 如果这样不起作用,请尝试项目 > 清理,并在项目下切换“自动构建”选项

就这样。Tomcat现在会将所有.class文件复制到目标服务器上,您将看不到ClassNotFound异常,因为Tomcat已经启动了。


谢谢!这对我有用。不过,我很好奇为什么项目默认没有这个配置。我使用Eclipse已经十多年了,这是我第一次听说“项目面貌”配置页面。这也是我第一次使用Spring版本的Eclipse,可能这就是我遇到问题的原因。 - Brel
你提到了“服务器模块列表和项目模块”。请问它们位于哪里? - iLearn

1
我已经按照答案上的步骤进行了操作,但仍然无法正常工作。所以除了执行这些步骤之外,我还发现在执行clean install之后刷新目标后会自动触发服务器上的“重新发布”状态,因此当服务器启动时,编译类的所有更改(新类和对现有类的更改)都被复制到wtpwebapps中。

1
我曾经遇到过几乎相同的问题- 我的一个项目(它的jar文件)没有被部署。我做的是:1)从Tomcat中删除该应用程序2)清理Tomcat工作目录3)最重要的是:项目 - 清理 - 所有。然后我再次添加了该应用程序...问题解决了。

0

我在将Web Dynamic项目转换为Maven项目时遇到了同样的问题。

我在属性->部署程序->右侧面板中发现了错误。 其中有source=src folderdeploy path=WEB-INF/classes。Eclipse找不到类。

将其更改为source=target/classes


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