Eclipse调试异常求助:调试时运行其他项目同名类
这种同名类冲突导致调试跑错项目的情况真的太闹心了!我之前调试多模块项目时也踩过这个坑,给你分享几个排查和解决的步骤:
检查构建路径的优先级
右键你的目标项目 →Properties→Java Build Path→ 切换到Order and Export标签页。这里的顺序直接决定了类加载的优先级,如果另一个包含同名类的项目排在你的目标项目前面,Eclipse就会优先加载它的类。把你的目标项目或者它的源文件夹移到列表最顶部,点击Apply保存设置。验证调试配置的类路径
右键目标项目 →Debug As→Debug Configurations,找到你正在使用的调试配置(比如Server类型或者Remote Java Application)。切换到Classpath标签页,检查里面是否包含了那个不该加载的项目,或者有没有把目标项目的类条目放在最前面。如果有多余的项目,选中后点击Remove,确保目标项目的类路径优先级最高。清理重建项目,清除缓存
Eclipse的编译缓存有时候会搞出奇怪的问题。先点击菜单栏的Project→Clean...,选择Clean all projects,然后右键目标项目 →Refresh,再重新构建(Project→Build Project)。这样能确保编译后的.class文件都是你目标项目的最新版本,没有残留其他项目的旧类。检查服务器部署目录
如果是部署到应用服务器(比如Tomcat)的J2EE应用,去服务器的部署目录(比如Tomcat的webapps文件夹)看看:是不是同时部署了两个包含同名类的应用?或者你的目标应用的WEB-INF/lib目录里有没有不小心打包了另一个项目的jar包?如果有的话,删除多余的部署应用或者jar包,重新部署你的目标项目。用Open Type定位类来源
按Ctrl+Shift+T打开Open Type窗口,输入那个同名类的全限定名,看看搜索结果里有几个匹配项。找到你要调试的那个类,右键它 →Show in→Package Explorer,确认它属于你的目标项目。调试时,当断点触发后,也可以在Debug视图里查看当前类的路径,明确是哪个位置加载了错误的类。
内容的提问来源于stack exchange,提问作者Romain Rnd

