【终极解决方案】idea报错找不到程序包/找不到符号

时间:2024-05-22 17:47:07

问题发现

 

        前几天在使用idea开发maven多模块项目的时候,偶然间遇到了这个问题,报错的类对应的jar包已经被加载到了IDE,相关依赖也都已经被下载到了本地仓库。可是使用IDE编译项目的时候,报了找不到程序包/找不到符号类似的错误,使用maven命令却可以正确编译。

 

初步解决

 

        由于当时时间紧,直接问了下度娘。大致结果如下:

 

包没引入或其他缓存问题

        可能因为一些操作没有被IDE监控到,又或者已经编译生成的文件阻碍了后续生成操作,所以我们可以手动的去做一些事情来避免这个问题。

Reimport重新导入maven依赖

【终极解决方案】idea报错找不到程序包/找不到符号

Rebuild Module重新生成项目

【终极解决方案】idea报错找不到程序包/找不到符号

编码问题

        这个问题虽然是小问题,还是决定拿出来啰嗦一下。建议各位更换了IDE或者电脑一定要先按自己习惯把一些基本配置改掉。

执行mvn命令

        mvn idea:idea这个命令解了我的燃眉之急。

【终极解决方案】idea报错找不到程序包/找不到符号

        后来搜了一下,此命令大概功能就是继续下载未下载完整的依赖。不过这里有个小问题,web项目会被这个命令打乱配置,具体是把资源文件夹更改成了普通文件夹,最终还是导致了启动不了。不过spring-boot倒是可以正常编译启动了。

 

-----------------------------------------------------------我是分割线----------------------------------------------------------------

 

        这两天闲下来之后具体分析解决了一下,这里记录分享一下解决过程。

 

问题分析

 

  1. 首先项目是多模块,而且模块之前依赖的耦合度高,难道是以来冲突导致的?
  2. 报找不到程序包的类使用@Data注解,难道是这个影响的?
  3. 模块A和模块B都有相同的文件路径,莫非是编译到一起的时候覆盖了?
  4. IDE配置或者仓库配置问题

 

排除问题

 

首先项目是多模块,而且模块之前依赖的耦合度高,难道是以来冲突导致的?

说干就干,找到了报错的那个模块A,新建了一个新的模块来依赖B,编译还是程序包找不到。然后就去pom文件排除冲突的依赖包,结果还是同样的问题。

 

报找不到程序包的类使用@Data注解,难道是这个影响的?

找到了模块A报错的那个类,去掉了@Data注解,重新生成发布到本地仓库。模块B重新引入模块A的依赖,依然未解决。

这里也可以参考解决 lombok 在 idea 的 SpringBoot 项目中 “找不到符号”

 

模块A和模块B都有相同的文件路径,莫非是编译到一起的时候覆盖了?

这个后来排除掉了,就算覆盖也要有相同的类才会覆盖。

 

IDE配置或者仓库配置问题

苦思无果呀,就还是上手试,从源头开始。

模块A删除了之前生成的文件和idea配置文件,然后重新导入项目。

【终极解决方案】idea报错找不到程序包/找不到符号

忽略上图的eclipse配置文件,当时一度转回了使用eclipse开发。总之就是删除你项目文件外的IDE配置文件。

注意:我这里重新导入项目之后在idea配置里面把maven本地仓库覆盖了,换了一个新的文件夹

【终极解决方案】idea报错找不到程序包/找不到符号

重新下载依赖。

然后生成,发现有一处错误,也是找不到程序包。

找到报错对应的依赖移除,之后重新导入依赖Reimport

【终极解决方案】idea报错找不到程序包/找不到符号

然后删除target文件夹,重新编译Rebuild,发现OK了

再使用mvn生命周期clean install一下,把模块A发布到本地仓库

之后回到模块B,重复模块A的操作,记住一定先保证依赖模块没有问题

重新导入项目,切换了本地仓库,重新导入了模块A,神奇的发现编译成功了。

 

总结

 

删除之前生成的文件和idea配置文件,然后重新导入项目

删除之前的本地仓库或者切换一个新仓库

找到报错对应的依赖移除,之后重新导入依赖,重新编译Rebuild(单模块到此结束)

mvn clean install,发布到本地仓库

下级模块重复以上操作

 

以上,如果有不对的,还望各位同道指出,侵删,转载注明出处。