我在最近的项目中遇到了这个问题,我遇到了如下错误:
java: variable resourceService not initialized in the default constructor
java: cannot find symbol
symbol: method getId()
location: class com.demo.entity.Resource
从这些错误中,我确信错误与 Lombok 生成的代码有关,因此我尝试找到根本原因,并为此审查了一些论坛/线程,要求 AI 代理也尝试了所有检查 Lombok
plugin
,dependency
, annotation processing enabled
等到龙目岛的changing the versions
,但无法找到原因和最令人困惑的地方事情是,我能够在 IDE 建议中获得所有这些方法,例如 getters、setters,但在编译时出现错误,然后我再次阅读了一些线程,并在其中稍微调整了一下设置,我发现了解决方案。
现在我知道你一定在想,如果我已经有了这个问题的解决方案,那么我在这里问这个问题到底在做什么?所以问题是,我只是想发布它,因为我无法在互联网上找到解决方案,尽管我从某些论坛了解到问题可能出在哪里,并且会指定一些可能对您有用的步骤,如果你也面临着同样的问题。
注意:我错了,Stackoverflow 上有针对该问题的相同解决方案,我在收集参考链接时发现了这个问题,猜猜我发现了什么。我觉得自己很愚蠢,但既然我写了这么多,我还是会发布这个,所以请耐心等待。解决方案如下:在IntelliJ IDEA下使用Lombok时无法编译项目
我知道许多面临这些错误的人都知道这些简单的解决方案,但我仍然为新手招募它,所以请仔细检查以下事项:
pom.xml
(Maven Build)或 build.gradle
(Gradle Build)Settings
-> Build, Execution, Deployment
-> Compiler
-> Annotation Processors
-> Enable annotation processing
- 应选中。注意: IDE 的未来更新中设置可能会有所不同,此处提到的设置基于
Idea 2024.3.2 release
现在这对我有用,所以当我在
Settings
-> Build, Execution, Deployment
-> Compiler
-> Annotation Processors
-> Enable annotation processing
中进行设置时,我正在查看处理器路径设置并发现我的注释处理器的处理器路径是从默认配置文件的项目类路径中获得的,这非常好,并且应该是这样,除非并且直到您已在其他地方安装了 Lombok 并在项目中使用它,那么您必须指定 Lombok 的 .jar 文件的路径,将其放在一边,我在默认配置文件下方发现了当前项目配置文件,该配置文件采用随机的自定义处理器路径由 Idea 或其他东西分配给它的路径,这是所有问题的根本原因。
因此,导致所有这些问题的主要原因是由 Ide 或其他东西将注释_processor_path 设置为项目级别配置文件的错误,因此将其更改为项目配置文件中的
Obtain processors from project classpath
为我解决了这个问题。请参阅附图以供参考。
编辑/更新:我发现是什么导致Idea将项目级注释处理器路径设置为随机值。原因是pom.xml中应用的配置(我还没有在spring-boot中处理过Gradle项目,所以我不知道)。
您可以从 pom.xml 中删除或注释掉这部分,它应该位于
<dependecies>
-> <build>
中的 <plugins>
下,或者也许有比删除它更好的解决方案,但目前效果很好,将如果我找到更好的,请更新。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>