You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IntelliJ IDEA 2022社区版编译时无法处理Lombok注解问题

问题背景

在IntelliJ IDEA 2022社区版中配置Lombok使用,项目未采用Maven、Gradle等构建系统,已手动配置源码目录、测试目录与输出目录。
当前IntelliJ编辑器可正常识别Lombok,调用Lombok生成的setter、getter时编辑器无报错,仅编译阶段出现错误。
执行build操作时,普通Java代码可正常编译,但Lombok注解未被处理:输出文件夹中生成了generated与generated_tests目录,按预期该目录应存放注解处理完成后的Java代码,但实际目录为空;未使用Lombok生成方法的类编译后class文件正常生成在常规输出目录中。

构建输出出现如下警告:

java: JPS incremental annotation processing is disabled. Compilation results on partial recompilation may be inaccurate. Use build process "jps.track.ap.dependencies" VM flag to enable/disable incremental annotation processing environment.

如果源码中调用Lombok生成的setter、getter,构建直接失败,报错如下:

java: cannot find symbol
symbol:   method getName()
location: class mypackage.MyClass

已尝试以下常见解决方案,问题仍未解决:

  • 确认IDEA内置Lombok插件已安装并启用
  • 在Settings > Build, Execution, Deployment > Compiler > Annotation Processors配置页,勾选Enable annotation processing与Obtain processors from project classpath选项
  • 在Settings > Build, Execution, Deployment > Compiler配置页的"User-local build process VM Options"设置项中,添加-Djps.track.ap.dependencies=false参数
  • 使用最新版Lombok(1.18.24版本),从Project Lombok官网下载jar包作为外部库引入项目
  • 完成以上配置后,执行缓存失效操作并重启IDE

其他环境信息:

  • 使用OpenJDK 18作为运行环境

补充日志

不调用Lombok生成setter、getter的场景下重建项目,log/build.log写入日志如下:

2022-06-14 22:50:45,429 [     32]   INFO - #o.j.j.c.BuildMain - Build process started. Classpath: C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2022.1.2/plugins/java/lib/jps-launcher.jar
2022-06-14 22:50:45,687 [    290]   INFO - #o.j.j.c.BuildMain - Connection to IDE established in 234 ms
2022-06-14 22:50:45,857 [    460]   INFO - #o.j.j.c.JpsModelLoaderImpl - Loading model: project path = C:/Users/laxon/Desktop/Coding/Languages/Java/LombokTest, global options path = C:/Users/laxon/AppData/Roaming/JetBrains/IdeaIC2022.1/options
2022-06-14 22:50:46,037 [    640]   INFO - #o.j.j.c.JpsModelLoaderImpl - Model loaded in 179 ms
2022-06-14 22:50:46,037 [    640]   INFO - #o.j.j.c.JpsModelLoaderImpl - Project has 1 modules, 3 libraries
2022-06-14 22:50:46,111 [    714]   INFO - #c.i.u.i.FilePageCache - lower=100; upper=500; buffer=10; max=980
2022-06-14 22:50:46,557 [      5]   INFO - #o.j.j.c.BuildMain - ==================================================
2022-06-14 22:50:46,584 [     32]   INFO - #o.j.j.c.BuildMain - Build process started. Classpath: C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2022.1.2/plugins/java/lib/jps-launcher.jar
2022-06-14 22:50:46,852 [    300]   INFO - #o.j.j.c.BuildMain - Connection to IDE established in 251 ms
2022-06-14 22:50:47,047 [    495]   INFO - #o.j.j.c.JpsModelLoaderImpl - Loading model: project path = C:/Users/laxon/Desktop/Coding/Languages/Java/LombokTest, global options path = C:/Users/laxon/AppData/Roaming/JetBrains/IdeaIC2022.1/options
2022-06-14 22:50:47,219 [    667]   INFO - #o.j.j.c.JpsModelLoaderImpl - Model loaded in 171 ms
2022-06-14 22:50:47,219 [    667]   INFO - #o.j.j.c.JpsModelLoaderImpl - Project has 1 modules, 3 libraries
2022-06-14 22:50:47,283 [    731]   INFO - #c.i.u.i.FilePageCache - lower=100; upper=500; buffer=10; max=980
2022-06-14 22:50:47,432 [    880]   INFO - #o.j.j.i.IncProjectBuilder - Building project; isRebuild:true; isMake:false parallel compilation:false
2022-06-14 22:50:47,433 [    881]   INFO - #o.j.k.j.b.KotlinBuilder - is Kotlin incremental compilation enabled for JVM: true
2022-06-14 22:50:47,433 [    881]   INFO - #o.j.k.j.b.KotlinBuilder - is Kotlin incremental compilation enabled for JS: true
2022-06-14 22:50:47,437 [    885]   INFO - #o.j.k.j.b.KotlinBuilder - is Kotlin compiler daemon enabled: true
2022-06-14 22:50:47,437 [    885]   INFO - #o.j.k.j.b.KotlinBuilder - Label in local history: build started 9039cfb8
2022-06-14 22:50:47,472 [    920]   INFO - #o.j.j.b.i.CompilerReferenceIndex - backward reference index deleted
java.lang.Exception
    at org.jetbrains.jps.backwardRefs.index.CompilerReferenceIndex.removeIndexFiles(CompilerReferenceIndex.java:190)
    at org.jetbrains.jps.backwardRefs.index.CompilerReferenceIndex.removeIndexFiles(CompilerReferenceIndex.java:183)
    at org.jetbrains.jps.backwardRefs.JavaBackwardReferenceIndexWriter.initialize(JavaBackwardReferenceIndexWriter.java:69)
    at org.jetbrains.jps.incremental.java.JavaBuilder.buildStarted(JavaBuilder.java:173)
    at org.jetbrains.jps.incremental.IncProjectBuilder.runBuild(IncProjectBuilder.java:444)
    at org.jetbrains.jps.incremental.IncProjectBuilder.build(IncProjectBuilder.java:197)
    at org.jetbrains.jps.cmdline.BuildRunner.runBuild(BuildRunner.java:150)
    at org.jetbrains.jps.cmdline.BuildSession.runBuild(BuildSession.java:348)
    at org.jetbrains.jps.cmdline.BuildSession.run(BuildSession.java:175)
    at org.jetbrains.jps.cmdline.BuildMain$MyMessageHandler.lambda$channelRead0$0(BuildMain.java:218)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base/java.lang.Thread.run(Thread.java:833)
2022-06-14 22:50:47,472 [    920]   INFO - #o.j.j.b.i.CompilerReferenceIndex - backward reference index version doesn't exist
2022-06-14 22:50:47,653 [   1101]   INFO - #o.j.j.i.IncProjectBuilder - Cleaned output directories in 49 ms
2022-06-14 22:50:47,887 [   1335]   INFO - #o.j.k.j.b.KotlinBuilder - KotlinTargetsIndex created in 31 ms
2022-06-14 22:50:47,900 [   1348]   INFO - #o.j.k.j.b.KotlinBuilder - Total Kotlin global compile context initialization time: 48 ms
2022-06-14 22:50:48,377 [   1825]   INFO - #o.j.j.i.j.JavaBuilder - Compiling 1 java files; module: LombokTest
2022-06-14 22:50:49,880 [   3328]   INFO - #o.j.j.i.j.JavaBuilder - Compiling 1 java files; module: LombokTest (tests)
2022-06-14 22:50:50,562 [   4010]   INFO - #o.j.j.c.BuildSession - Build duration: Builder 'Backward references indexer' took 65 ms; 0 sources processed
2022-06-14 22:50:50,562 [   4010]   INFO - #o.j.j.c.BuildSession - Build duration: Builder 'Java' took 1 s 913 ms; 2 sources processed (956 ms per file)
2022-06-14 22:50:50,562 [   4010]   INFO - #o.j.j.c.BuildSession - Build duration: Builder 'Kotlin Builder' took 538 ms; 0 sources processed
2022-06-14 22:50:50,567 [   4015]   INFO - #o.j.j.i.j.JavaBuilder - javac 18.0.1.1 was used to compile [LombokTest]
2022-06-14 22:50:50,937 [      3]   INFO - #o.j.j.c.BuildMain - ==================================================
2022-06-14 22:50:50,963 [     29]   INFO - #o.j.j.c.BuildMain - Build process started. Classpath: C:/Program Files/JetBrains/IntelliJ IDEA Community Edition 2022.1.2/plugins/java/lib/jps-launcher.jar
2022-06-14 22:50:51,217 [    283]   INFO - #o.j.j.c.BuildMain - Connection to IDE established in 233 ms
2022-06-14 22:50:51,238 [    304]   INFO - #c.i.o.u.i.w.IdeaWin32 - Native filesystem for Windows is operational
2022-06-14 22:50:51,262 [    328]   INFO - #o.j.j.c.JpsModelLoaderImpl - Loading model: project path = C:/Users/laxon/Desktop/Coding/Languages/Java/LombokTest, global options path = C:/Users/laxon/AppData/Roaming/JetBrains/IdeaIC2022.1/options
2022-06-14 22:50:51,441 [    507]   INFO - #o.j.j.c.JpsModelLoaderImpl - Model loaded in 177 ms
2022-06-14 22:50:51,441 [    507]   INFO - #o.j.j.c.JpsModelLoaderImpl - Project has 1 modules, 3 libraries
2022-06-14 22:50:51,512 [    578]   INFO - #c.i.u.i.FilePageCache - lower=100; upper=500; buffer=10; max=980
2022-06-14 22:50:51,662 [    728]   INFO - #o.j.j.c.BuildMain - Pre-loaded process ready in 725 ms
2022-06-14 22:50:51,722 [    788]   INFO - #o.j.j.c.BuildMain - Build canceled, but no build session is running. Exiting.
解决方案

这个问题是IDEA 2022.1+搭配JDK18时,无构建工具场景下注解处理器路径识别异常导致的。之前勾选的Obtain processors from project classpath在手动导包场景下不会自动把Lombok加入注解处理器执行路径,按以下步骤操作即可:

  1. 打开Settings > Build, Execution, Deployment > Compiler > Annotation Processors配置页,取消勾选Obtain processors from project classpath,选择下方的Processor path选项,点击右侧加号,手动把导入项目的Lombok jar包添加到路径中
  2. 删掉之前添加的-Djps.track.ap.dependencies=falseVM参数,2022.1版本后这个参数会干扰注解处理器正常加载,弹出的JPS增量注解处理警告不用处理,不影响编译结果
  3. 打开项目结构的模块依赖配置,确认Lombok jar的依赖范围是Compile,不要设为Provided——没有构建工具的情况下,IDEA不会自动把Provided范围的依赖加入编译时的注解处理器路径
  4. 删除输出目录下之前生成的空generated、generated_tests文件夹,执行File > Invalidate Caches...清理缓存并重启IDE,重启后直接Rebuild Project即可

如果按以上操作仍失败,直接把JDK换成17 LTS版本。JDK18是短期迭代版本,IDEA 2022.1对它的注解处理流程适配存在已知bug,哪怕Lombok 1.18.24本身支持JDK18,搭配IDEA内置的JPS编译链也容易出现兼容问题。

内容的提问来源于stack exchange,提问作者Theone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 18:09:21