重启Eclipse后项目出现ClassNotFound问题

一、问题现象

Eclipse下(IDEA不会出现这种问题),重启项目后(未作任何改动),抛出异常,提示找不到类文件:DefaultContextLoaderListener
重启Eclipse后项目出现ClassNotFound问题

二、问题说明

我只不过是重启tomcat服务器了,又没有动过java文件,为什么会报错呢?

Eclipse中,tomcat服务器运行的是编译后的文件;重启tomcat后,Eclipse会重新编译项目,然后tomcat才会运行重新编译后的文件。按照这个思路,就不难发现问题就出现在:Eclipse编译项目文件------>tomcat运行项目文件 的这个过程中。

然后我们再想一想:tomcat不过是个被执行者,你投什么进去给它,它就跑什么文件,所有东西来者不拒。好,现在我们就能知道问题的所在了。出现这个问题大概率原因是因为Eclipse编译发生异常(这个结论的另一个依据是:使用IDEA运行这个项目并不会出现这种情况,而且我IDEA和Eclipse使用的tomcat服务器是同一个)。

三、问题解决方法

3.1 方案一:三“清”一“删”

这里所谓的三“清”一“删”:“三”、“一”就是数字一、三,而“清”,是清理的“清”;“删”就是删除的“删”

3.1.1、第一“清”:

重启Eclipse后项目出现ClassNotFound问题

3.1.2、第二“清”:

重启Eclipse后项目出现ClassNotFound问题

3.1.3、第三“清”:

重启Eclipse后项目出现ClassNotFound问题

3.1.4、一“删”:

重启Eclipse后项目出现ClassNotFound问题

以上过程执行完成后,启动项目,一般就能够解决问题(这三清一删的作用就是清理掉Eclipse编译后的文件)。

3.1 方案二:文件对比

将 “项目/webapp/WER_INF/classes” 目录下的文件和 “项目/src” 下的文件做对比(尤其是 .xml 这样的spring配置文件以及一些静态文件) 少那一个,就手动将缺失的文件手动复制到前者(classes)目录下(这个目录即为tomcat运行的文件目录)
重启Eclipse后项目出现ClassNotFound问题

然后启动项目,问题得到解决