idea项目springcloud编译运行报找不到符号、程序包不存在,并且后台页面样式出错

时间:2024-03-21 09:24:08

一、结论

idea项目中的.iml文件不能随便删除

二、问题的出现

2.1 问题还要追溯到2019.10.30。这天我们进行正常的开发,到了下午4点多的时候,我要进行push代码,可是怎么进行pull、push代码idea都不能正常进行,我就像往常一样把代码删除,重新克隆,(因为idea有时候会发疯就是不能正常)。我重新拉完代码,把我的代码进行push,ok了。

2.2 可是问题没有这么简单,当我进行编译运行项目的时候,然后报找不到符号,就是编译不过去。于是上网找解决办法,可是很多文章都讲的是进行maven reimport、点idea中file->invalidate caches/restart重启idea等,我试了几遍我的问题依然没有解决。

2.3 后来我问同事,他说他也遇到代码推不上去、拉不下来的情况。他用的方法是在git执行命令 git pull origin master --allow-unrelated-histories,然后他就能正常pull、push代码了。我进行同样的命令,代码的pull、push可以正常进行了。

2.4 可是编译运行项目我的还是报错,同事的正常运行。真是奔溃,也不知道到底哪错了,该试的方法我都试了。好吧。突然想起来同事说在运行上面的命令是发现远程仓库中项目model模块.iml文件没了,继续进行百度吧,翻到一篇文章讲iml文件丢失,导致项目出错。于是联想到model模块。于是打开model模块,果然没有.iml文件,其他模块的都有。(关于同事的能够编译而我的还是不能编译是因为我的代码是重新拉下来的,model模块没有.iml文件。因为在之前其他同事觉得iml文件没用,于是直接在远程仓库上就给干掉了。)
idea项目springcloud编译运行报找不到符号、程序包不存在,并且后台页面样式出错
2.5 查看.iml文件可以在file->settings->editor->file types中把 *.iml: 配置给删掉就能看到隐藏的iml文件了。因为我配置了git提交时忽略提交iml文件。
idea项目springcloud编译运行报找不到符号、程序包不存在,并且后台页面样式出错
2.6 当发现真的是model模块缺少iml文件,于是就在项目中把model模块注释掉,maven reimport,然后放开注释重新引一遍,再maven reimport。编译后idea会自动重新生成iml文件。好了,再次编译通过,项目运行起来了,花费我好几个小时,2019.10.30编译报错的问题解决了。进行正常的开发工作。
idea项目springcloud编译运行报找不到符号、程序包不存在,并且后台页面样式出错
2.7 时间按照自己的轨迹在走,我们也正常愉快地进行开发。到了11.1日下午同事让我启动一下自己的本地,看看页面是否报错,启动完后看了几个出错的页面,我自己的本地也报错了。10.31晚上后台上了线,发布了些新功能,现在正式环境页面报错。可是发布的新功能根本就没动过报错的页面啊,报错的几个页面报错的信息进行百度,各种方法都用了就是没用。真是疯了。。。

2.8 猜想到可能还是和model被删除的iml有关,于是代码进行回退。根据git提交的日志,代码回退到iml文件被删除之前的版本,启动项目,页面能够正常展示,报错的页面也ok。代码回退到iml文件被删除后最近的版本,启动项目,页面报错,展示异常。

2.9 至此这些问题定位到因为model模块iml文件被删,导致这些问题。

三、解决问题

3.1 代码回退到iml文件被删之前最近的一个版本,打开其model模块iml文件,复制出来
3.2 代码回退到当前master最新的版本,打开其model模块iml文件,复制出来
3.3 将两个文件内容进行比对,看看当前文件内容少什么东西,然后添加进去,更新当前的iml文件,然后提交上去。启动项目后页面正常展示。
3.4 总结:项目.iml文件不能随意删除,不然会出现一些意想不到的错误。