【8010】解决IDEA “Cannot resolve symbol XXX”问题
问题背景:
1.刚才从Github导入别人的MAVEN项目,改了全部的爆红,满心期待运行出结,结果点击测试test出现报错“Cannot resolve symbol XXX”,我真的会谢,记得以前也遇到这个问题,那个原因是java代码中JDK版本与语言匹配不一致,修改一下,这次又遇到了这个,趁着这个机会总结一下把。
2.后来我又遇到了Mybatis中配置xml中的<mapper namespace=“user”>也出现了同样的问题,找到了一些解决办法又回来补充了。如:
解决方法:
情况一:导入pom.xml中的JDK与idea的不匹配(不是JDK问题直接跳到场景二)
**情景一方案第一步:**确定pox.xml的jdk版本–>修改idea的JDK版本(File–>Project Structure–>(如果当前idea运行的版本是你安装的JDK,后面不用执行)–>(如果没有就去下载)ADD JDK…–>apply–>OK);
具体步骤:
打开idea,点击File,然后点击Project Structure,再点击SDK,查看当前idea运行的版本是不是你安装的JDK路径,确保idea中连接的JDK能正常编译使用:如果没有点击+号,找到你安装jDK的那个文件夹即可,最后点击apply;并且记住你起JDK的Name为后面选择使用;
3.情景一方案第二步:(project–>project SDK–>Project Language level–>apply)
选中project,点击project SDK:的jdk改为你安装的版本,并将下方的
Project Language level的语言版本该为和你jdk匹配的语言版本:我选的特性是:8-Lambdas, type annotations etc;,最后点击apply;
原因:
确保模块配置特定于模块的SDK与项目的语言级别相匹配,比如我的是SDK是JDK18版本的,那么我对应的语言级别特性就可以选择是:8-Lambdas, type annotations etc.。
但我选择默认特性情况也没有报错,X - Experimental features,X - Experimental features.。
另外关于JDK版本问题:有兴趣可以去搜索一些资料,大致是则在 Java1到 Java9 对应每一个版本号 :JDK1.0、JDK1.2 … JDK1.8、JDK1.9,Java10以后JDK对应名称为:JDk10、JDK11、JDK12。
注意:你也可以修改别人pom.xml的编码格式改为你当前idea当前匹配的一致,至于会不会报错就不一定了,因为版本不一样,一些语言支持也不一样,并且修改别人写好的代码就要有一定的了解性才回去做的事,一般都是他们需要什么配置我去搞什么配置去支持,万不得已才去修改。
场景二:导入的MAVEN项目与自己原来的MAVEN文件设置不一致
第一步:清除以前idea的相关配置缓存
点击菜单中的 File -> Invalidate Caches…–>清空 caches后 等待重启后重新加载建立索引即可。
第二步:查看MAVEN相关配置文件,改为以前使用的setting(如果你不介意,用系统默认的也行,可是系统默认的setting配置文件安装没有安装阿里巴巴仓库可就是一个问题了,一些jar可不全):
(File --> Settings–>Build, Execution, Deployment–>Build Tools–>Maven->修改User settings file(用户设置文件)与Local repository(地方储存库)–>apply–>OK);
具体步骤:(也可直接在Setting直接搜索Maven,但有时候出不来,不要输入全名试试)
点击File,然后点击Settings,再点击>Build, Execution, Deployment,继续点击Build Tools,找到Maven中的设置修改User settings file(用户设置文件)与Local repository(地方储存库),这个要根据你当初如何配置Maven去设置,不懂得可以去网上搜搜,最后点击apply即可;
场景三(项目缓存出现了问题)方法:关闭重启idea、clean清理maven缓存、清理idea缓存,又或者将项目的idea和target删除,重新生成项目索引联系和class字节码文件。(清理缓存的问题总有一款适合你,嘿嘿)
这是我在MyBatis遇到的问题,也是这个报错,我用了重启就好了,应该是删除新建文件名导致项目运行时缓存的索引连接不上(找不到),重新建立即可。
场景四:mybatis中配置mapping的name=""属性爆红(代码没错,仍能正常运行)
这篇博客博客写的够多了,如果你是这种错误,可以参考这篇的解决办法:
https://blog.csdn.net/Caojian_0/article/details/127059164
小叙一会:
1.其实产生这样的问题归根还是导入别人的MAVEN项目,一些配置被默认修改了,导致一切辅助的运行配置不一样,从而项目运行不起来,这就需要我们非常熟悉如何才能规范设置MAVEN了;
2.我自己写的自己运行没啥问题,但是导入别人的就报一大堆错误,要么编码方式不一致,要么jar不兼容,要么等等,慢慢来吧,方法总比困难多,
3.当然以后还会碰到这类问题,到时候再补充,加油,明天就开始学习java连接前端表单表格了!