有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

当我在IntelliJ IDEA下使用Lombok时,java无法编译项目

我试图在我的项目中使用Lombok,我正在使用IntelliJ IDEA 11开发项目

我已经安装了3rd-party plugin for IDEA,它似乎工作正常,因为IDEA可以看到所有自动生成的方法/字段

所以我有一个使用Slf4j的类。我这样注释它

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class TestClass
{
    public TestClass()
    {
        log.info("Hello!");
    }
}

但是当我构建我的项目时,编译器会发出:cannot find symbol variable log

你能告诉我我错过了什么吗

更新:结果是RequestFactory注释过程失败

input files: {com.zasutki.courierApp.server.TestServlet, com.mine.courierApp.server.model.DatastoreObject}

annotations: [javax.inject.Singleton, javax.inject.Inject, lombok.Getter, lombok.Setter, com.googlecode.objectify.annotation.Id, com.googlecode.objectify.annotation.OnSave]

Processor com.google.web.bindery.requestfactory.apt.RfValidator matches [lombok.Getter, com.googlecode.objectify.annotation.Id, javax.inject.Inject, lombok.Setter, com.googlecode.objectify.annotation.OnSave, javax.inject.Singleton] and returns false.

cannot find symbol variable log

有什么解决办法吗

更新2:也许读者不想听到这句话,但我最终选择了Scala


共 (6) 个答案

  1. # 1 楼答案

    启用注释处理将使其正常工作

    但是,如果您使用的是Mac,请确保从两个可用位置启用注释处理(勾选复选框)

    1.)Intellij Idea->;偏好->;编译器->;注释处理器

    2.)文件->;其他设置->;默认设置->;编译器->;注释处理器

  2. # 2 楼答案

    1. 确保它已正确添加到项目中

    格拉德尔的例子:

     dependencies {
         compileOnly 'org.projectlombok:lombok:1.18.8'
         annotationProcessor 'org.projectlombok:lombok:1.18.8'
         ...
     }
    
    1. 为你的IDE安装Lombok插件
    2. 选中IDE(IntellijIdea)中的“启用注释处理”复选框,不知道其他IDE(如Eclipse)是否有类似的情况
  3. # 3 楼答案

    在IDEA 12中,我通过在以下内容中设置复选框Enable annotation processing来修复它:

    Settings -> Compiler -> Annotation Processors

    对于IDEA 2016.2:

    Preferences... > Build, Execution, Deployment > Compiler > Annotation Processors

    启用后,运行Build->;重建项目以识别注释并消除错误


    对于IDEA 2019.2.1,根据项目的配置,安装project Lombok插件可能不够。下面是将Project Lombok与IntelliJ IDEA结合使用的另一种方法:

    1. 访问https://projectlombok.org/download
    2. 将JAR文件下载到项目库目录中(例如,$HOME/dev/java/project/libs
    3. 启动IDE
    4. 单击文件🠖 设置
    5. 扩展构建、执行和部署🠖 编译程序🠖 注释处理器
    6. 确保选中了启用注释处理
    7. 确保根据项目的模块设置选择了相对于存储生成源(如果模块输出目录不起作用,请返回并尝试其他设置)
    8. 单击应用
    9. 单击插件
    10. 单击市场
    11. 将搜索字段设置为:lombok
    12. 安装Lombok
    13. 单击确定
    14. 如果出现提示,请重新启动IDE
    15. 单击文件🠖 项目结构
    16. 选择库
    17. 单击+符号添加新的项目库(或按Alt+插入
    18. 选择Java
    19. 将路径设置为:$HOME/dev/java/project/libs/lombok.jar
    20. 单击确定
    21. 选择要应用的模块
    22. 单击确定
    23. 或者,将lombok重命名为Project Lombok 1.18.8
    24. 单击确定

    该项目现在可以从lombok包导入,并使用project Lombok注释(例如lombok.Setterlombok.Getter

  4. # 4 楼答案

    解决此问题的图片表示

    首先启用注释处理器,然后再试一次。这可能有效,也可能无效。 enter image description here

    发布后,您可以从intellij安装lombok插件(安装后intellij将重新启动以启用插件,因此请确保保存您的工作。(为了安全起见,intellij会在重新启动前保存所有更改。)截图如下:

    enter image description here

  5. # 5 楼答案

    在最新的Gradle版本中,您应该使用annotationProcessor:

    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok:1.18.8'
    
  6. # 6 楼答案

    我正在使用IntelliJ IDEA 2020.3(社区版)

    在这里,除了安装Lombok插件和启用注释(由其他答案解释)。我还需要将标志-Djps.track.ap.dependencies=false设置为构建过程选项

    我不需要使用-javaagent方法,也不需要设置类路径

    1。转到:文件|设置|构建、执行、部署|编译器|“共享构建过程VM选项”字段

    参考资料: