问题描述
重新打开clone下来的新项目,调好maven与jdk后,模块运行无误,但是模块打包时绝大部分类: java:找不到符号。编译和重新build模块情况一样。
后面跟踪了这些类,都是引用了@Data注解的地方。
解决办法
(复现不出来了,反正最后是这种操作解决的…瞎猫碰死耗子了属实是)
重启并且清除缓存 invilidate and restart后,reload project,然在父模块(root)那里clean一下,install一下,后面再进行模块的clean与package。
启动项目时出现 “Lombok Requires Annotation Processing“(lombok需要启用注释处理)如下的错误提示的话记得点 enable。
同等于下述操作:
尝试过的解决办法(但是没有解决我的问题)
- 修改编码格式
- 检查jdk和maven
- 重启并且清除缓存 invilidate and restart
- 删除iml文件和.idea文件后重启
- reload project, clean,package
- 更改lombok版本
均未成功,打包时还是一样的错误
原因分析:
父子项目,其中common为公共模块,A模块依赖common模块pom,二者均集成父模块。
打包时,common模块install 打包到本地正常,A模块install时抛:找不到符号,跟踪一下均为找不到引用common模块中的实体类。
在开始新的多个模块的项目时,其中的parent项目要先install一回,之后其他子项目才可以运行mvn,才能编译子项目。
假如common继承父pom没有设置relativePath标签的值,那么这个标签值默认是…/pom.xml。
common查找父pom顺序为: …/pom.xml-本地仓库-远程仓库
所以common模块能通过…/pom.xml找到父pom
而A模块依赖common模块,install时,查找顺序为: 本地仓库-远程仓库
但本地仓库中的common模块无法通过…/pom.xml找到父pom文件(获取不到dependencyManagement中的版本信息等),所以此时A模块打包失败,找不到common模块中的符号。
所以需要先将父project 进行install操作打包到本地,之后A模块进行install操作才能成功。