Lombok需要注释处理

时间:2016-08-12 07:05:38

标签: android-studio lombok intellij-lombok-plugin

我正在使用Android Studio 2.2 Preview 7,而Lombok插件突然开始说: Annotation processing seems to be disabled for the project X,并提供设置链接。

enter image description here

点击通知不会把我带到正确的地方。

对此有什么解决方法?

10 个答案:

答案 0 :(得分:71)

通过点击通知打开的设置是Per Project设置,在这种情况下,这些设置不是您需要的设置。

要解决此问题,请转到

  • File->Other Settings->Default Settings
  • 展开Build, Execution, Deployment
  • 展开Compiler
  • Annotation Processors支票Enable annotation processing
  • 您可能需要重新打开项目才能使设置生效。
  • 享受

有关完整参考 - 包含相应设置的屏幕截图: enter image description here

答案 1 :(得分:15)

使用较新的gradle版本,将这些行键入应用程序的build.gradle的依赖项块就足够了:`

compile "org.projectlombok:lombok:1.16.16"
annotationProcessor "org.projectlombok:lombok:1.16.16"  

将项目与gradle同步,它将起作用。

答案 2 :(得分:13)

首先,我不认为从欢迎屏幕中删除您的项目会产生任何影响。考虑一下,从该屏幕上的“最近项目”中删除您的项目不会重新创建它,如何更改默认设置对现有项目有什么影响?

要在现有项目中启用注释处理,您无需删除任何内容。转到YourAwesomeProject/.idea/compiler.xml并确保您在以下属性中有值“ true ”:/project/annotationProcessing/profile@enabled

像这样:

<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="CompilerConfiguration">
    ...
    <annotationProcessing>
      <profile default="true" name="Default" enabled="true"><!-- here -->
        <processorPath useClasspath="true" />
      </profile>
    </annotationProcessing>
  </component>
</project>

您可能需要文件 - &gt;使高速缓存无效/重新启动

答案 3 :(得分:7)

对于那些使用Android Studio 2.4+时遇到同样问题的人,除了Janis Peisenieks的答案之外,通过上述任何提示都无法解决。

打开您的Intellij IDEA 2017 / Android Studio 2.4+并转到(Windows)

  1. 文件 - &gt;其他设置 - &gt;默认设置
  2. 展开构建,执行,部署
  3. 展开编译器并选择注释处理器
  4. 确保您已启用启用注释处理和“从项目类路径获取处理器
  5. 最后但并非最不重要的是使用下面的代码段更新您的项目build.gradle文件。忽略它已被弃用的提示,因为它没有使用(直到现在。见issue)。

    defaultConfig {
        javaCompileOptions {
            annotationProcessorOptions {
                includeCompileClasspath = true
            }
        }
    }
    
  6. 发现如果没有上述所有更改,有一种非常简单的方法!

    如果您将处理器设置为像lombok一样的gradle,则不会仅使用提供的 testCompile 。您需要使用 annotationProcessor 添加此项以及依赖项。例如:

    dependencies {
        provided "org.projectlombok:lombok:1.16.16"
        annotationProcessor "org.projectlombok:lombok:1.16.16"
    }
    

    感谢杰克沃顿的奶油刀,我想知道他是如何解决它的。

    提示:您可能需要使缓存无效并重新启动才能使其适用于某些注释处理器(如lombok)。

答案 4 :(得分:4)

当时可能标记的答案已经足够但我在android studio 3和lombok 1.16.18上有点挣扎。无论如何以下为我工作

app中的

&gt; build.gradle添加以下

compileOnly 'org.projectlombok:lombok:1.16.18'
annotationProcessor 'org.projectlombok:lombok:1.16.18'

如果你在MyApplication&gt;中,你可能会开始收到其他错误lombok.config添加以下行

lombok.addGeneratedAnnotation = false
lombok.anyConstructor.suppressConstructorProperties = true

如果你没有lombok.config刚添加

上面是lombok的开发人员在以下帖子中提出的建议 addGeneratedAnnotation
suppressConstructorProperties

答案 5 :(得分:1)

lombok网站(lombok set up for android)上的设置指南说我们应该做两件事

  

1,安装lombok插件

     

2,添加gradle依赖项

dependencies {
  compileOnly 'org.projectlombok:lombok:1.18.6'
  annotationProcessor 'org.projectlombok:lombok:1.18.6'
}

但是对我来说,该插件会导致问题发生。在禁用插件后,错误消失了,而lombok仍然有效。

答案 6 :(得分:1)

从Android Studio v3.5(2019年8月)及之前开始,没有设置注释处理器。 但是,在build.gradle中的dependencies部分中定义就足够了:

dependencies {
...
    compileOnly 'org.projectlombok:lombok:1.18.8'
    annotationProcessor 'org.projectlombok:lombok:1.18.8'
...
}

如果Android Studio仍然抱怨“ Lombok需要注释处理”,对我来说,正是Lombok插件重新安装和“无效缓存/重新启动”解决了该问题。

答案 7 :(得分:0)

按照设置说明书说明:

  

Gradle确保Android插件的版本是&gt; = 0.4.3   使用gradle-lombok插件。如果您不想使用该插件,请添加   Lombok到您的应用程序的依赖块(需要Gradle v2.12   或者更新):

foo.txt
     

Android Studio按照之前的说明操作(Gradle)。此外   要正确设置您的gradle项目,您需要添加   Lombok IntelliJ插件,为Android Studio添加lombok支持:

     
      
  1. 转到文件&gt;设置&gt;插件
  2.   
  3. 点击Browse repositories ...
  4.   
  5. 搜索Lombok插件
  6.   
  7. 点击安装插件重启Android Studio
  8.   

https://projectlombok.org/setup/android

答案 8 :(得分:0)

AndroidStudio 3.5 + 中,执行下一步:

  • 转到File -> Other Settings -> Preferences for New Projects... (!)
  • 展开Build, Execution, Deployment
  • 展开Compiler
  • 选择Annotation Processors
  • 检查Enable annotation processing

如果仍然无法使用,请重新安装Lombok插件。

答案 9 :(得分:0)

  1. 安装Lombok插件并重新启动
  2. 添加依赖项:https://projectlombok.org/setup/gradle

    compileOnly'org.projectlombok:lombok:1.18.12' subscriptionProcessor'org.projectlombok:lombok:1.18.12'

    testCompileOnly'org.projectlombok:lombok:1.18.12' testAnnotationProcessor'org.projectlombok:lombok:1.18.12'

这对我有用。