idea較新版本識(shí)別不了lombok生成的方法

現(xiàn)象

idea版本:

IntelliJ IDEA 2021.1.1 (Ultimate Edition)
Build #IU-211.7142.45, built on April 30, 2021

lombok版本

1.18.16

編譯的時(shí)候報(bào)錯(cuò):

java: You aren't using a compiler supported by lombok, so lombok will not work and has been disabled.
Your processor is: com.sun.proxy.$Proxy32
Lombok supports: OpenJDK javac, ECJ

新版本idea所使用的的java compilier編譯器,lombok用不來, 得是 javac
所以 @Getter @Setter 等lombok注解就沒法在pre-compile的時(shí)候沒法生成對應(yīng)的方法了

問題排查

lombok的相關(guān)issue:https://github.com/projectlombok/lombok/issues/2592

IntelliJ is now wrapping the ProcessingEnvironment in a Proxy. This lead to a problem for us at MapStruct (mapstruct/mapstruct#2215). While trying to fix that and testing with our examples I realized that our examples with Lombok are not compiling anymore.
大致意思是,IntelliJ新版本在 ProcessingEnvironement 預(yù)編譯的時(shí)候是以代理的方式來執(zhí)行的,不再是直接 javac方式,所有 lombok依賴的 annotation processors

解決辦法

IntelliJ的開發(fā)人員在這里有回復(fù) https://youtrack.jetbrains.com/issue/IDEA-252069

Intellij使用包裝類來編譯是為了收集分析版本變更的影響以更好的編譯文件, lombok的這個(gè)判斷邏輯有點(diǎn)太死板了 他們得改

在這增加參數(shù): -Djps.track.ap.dependencies=false

就能正常處理 lombok注解了,
同時(shí)提示

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.
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容