IDEA 启动项目,编译时报错 “java: 找不到符号” 问题解决(仅此一篇即可解决)
同事从 Git 仓库中新 clone 的项目,IDEA 启动项目,编译时报错 “java: 找不到符号”,总之就是对象的getter/setter相关方法缺失,摸爬滚打半天解决后,在此记录分享一波~
文章目录
💗💗💗您的点赞、收藏、评论是博主输出优质文章的的动力!!!💗💗💗
欢迎在评论区与博主沟通交流!!大量优质博文关注一波不亏!👇🏻 👇🏻 👇🏻
一、背景
/Users/zhuzicc/IdeaProjects/test_demo/api/src/main/java/com/zhuzicc/api/dto/test.java:111:57
java: 找不到符号
符号: 方法 getxxxx()
位置: 类型为com.zhuzicc.api.dto.Test的变量 test
具体报错如下图所示:
二、解决方案
先说说我们是怎么解决的
直接在 IDEA 的 “settings/Build,Execution,Deployment/Compiler” 中的 “Shared build process VM options” 配置Java虚拟机(JVM)系统属性的命令项,设置如下:
-Djps.track.ap.dependencies=false
如果上述我们的场景没有解决大家的问题,可以接着往后看;
在罗列一些别的情况
ps:罗列的情况不是我们本次遇到的真实场景,仅提供一个解决问题的思路方向。
Lombok插件安装
检查一下 IDEA 中是否安装了 Lombok插件;
Lombok依赖引入
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
</dependency>
检查 Jdk 版本
要保证 jdk 版本是8以上(也就是1.8以上);
第一处
Project Settings/Project:
第二处
Project Settings/Modules:
第三处
Build,Execution,Deployment > Compiler > Java Compiler
是否打开注解支持
如果没有打开,idea会提示:
如果没有提示,可以从下述路径自行打开:
Build,Execution,Deployment >Compiler >Annotation Processors:
ps:更改过以上配置,建议重启 IDEA (玄学而已,也可以不重启)
三、关于 Djps.track.ap.dependencies 配置的一些解释
在IntelliJ IDEA中,"Shared build process VM options"允许开发者定义影响IDEA构建过程的JVM选项。这些选项可以影响IDEA的性能或行为,其中有一个选项是 -Djps.track.ap.dependencies=false
。
-Djps.track.ap.dependencies=false解释
jps
:这是指Java编译器服务(Java Compiler Service),它用于管理IDEA的构建和编译过程。track.ap.dependencies
:这是一个特定的选项,用于决定IDEA是否在构建过程中跟踪Java注解处理器(Annotation Processor)的依赖项。false
:设置为false
意味着IDEA在构建项目时不会跟踪注解处理器生成的文件的依赖关系。
作用
- 性能优化:
- 默认情况下,启用对注解处理器依赖的跟踪,这会导致构建过程花费更多资源去探测和解析注解处理器生成的内容,可能对大型项目造成一定的影响。
- 将
track.ap.dependencies
设置为false
可以降低构建过程的复杂性,提高IDEA在某些场景下的反应速度和性能。
- 构建过程的简化:
- 对于不依赖于注解处理器输出进行构建的项目,禁用此跟踪可以减少不必要的处理。
- 开发者可以选择在对注解处理器的输出依赖较少的项目或者追求构建性能的项目中使用此设置。
使用时的注意
- 项目类型:
- 如果项目广泛使用注解处理器且构建需要依赖注解生成的代码,禁用依赖项跟踪可能会导致未预期的行为。
- 在使用Spring、Dagger或其他依赖注解处理器的框架时,确认这种设置对实际应用的影响。
- 验证功能:
- 如果此设置影响了编译器的正常功能,或者IDEA无法检测到注解生成代码的更改,可能需要启用此选项来确保准确的编译。
总结
总的来说,-Djps.track.ap.dependencies=false
是一个用于优化IDEA构建性能的选项,但使用时需要根据具体项目依赖情况进行谨慎配置。尤其在构建过程中大量使用Java编译器注解处理器的项目需要特别注意对构建输出结果的确认。
