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

我已经为IDEA安装了第三方插件,它似乎工作正常,因为IDEA可以看到所有自动生成的方法/字段。

我有一个使用Slf4j的类。我这样做了注解

import lombok.extern.slf4j.Slf4j;

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

但当我建立我的项目编译器吐槽:无法找到符号变量日志。

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

更新:原来是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。


当前回答

我必须禁用刚才添加的@Document注释。我正在转换我的项目使用Mongo而不是Postgres,它以前是工作的,但似乎@文档与Lombok的@Getter冲突

其他回答

启用注释器处理器后,我必须更新到最新版本的lombok:

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.16</version>
    </dependency>

Intellij的版本:

IntelliJ IDEA 2020.3 (Community Edition)
Build #IC-203.5981.155, built on November 30, 2020
Runtime version: 11.0.9+11-b1145.21 x86_64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
macOS 10.16
GC: ParNew, ConcurrentMarkSweep
Memory: 1981M
Cores: 8
Non-Bundled Plugins: org.intellij.plugins.hcl, Lombook Plugin, org.sonarlint.idea, in.1ton.idea.spring.assistant.plugin, org.jetbrains.kotlin, gherkin, cucumber-java

我在使用JDK8构建时遇到了类似的问题,将项目设置回JDK7,它工作得很好。可能是不能在JDK8下编译的旧版本的Lombok。

可能发生的情况是,即使你正确地配置了它,并且它在库和Gradle依赖项列表中可见,IntelliJ仍然没有在类路径中显示它。或者它确实存在,但是配置了不同的作用域(例如:test而不是compile)。

首先,确保安装了插件并启用了注释处理,如其他答案中所述。

如果你仍然无法识别注释,将光标放在上面,点击ALT+ENTER(或OPTION+ENTER),看看是否有菜单选项Add library: Gradle: org。projectlombok:lombok:VERSION到类的路径。如果你能看到它,选择这个,它可能会解决你的问题。

你可以查看库,它的范围在: 项目设置/模块/依赖选项卡(在那里搜索lombok)

我想我还没读到答案里的最后一步。(Mac + IntelliJ终极版2020.1) 在我的情况下,这只是一个愚蠢的原因,但这些是可以占用大部分时间的错误,因为错误并不直接指向它。

在删除并重新克隆项目后,我出现了相同的lombok错误。 在做了这个线程中前面提到的步骤后,我仍然有错误,然后我发现我的SKD默认为版本11。我把它改回1.8,一切都恢复正常了。

>项目设置>项目 我将Project SDK和Project语言级别更改为1.8

PS,在这个IntelliJ版本中,mac上默认设置的位置与前面提到的不同: 文件——>新项目设置——>新项目的首选项——>构建、执行、部署——>编译器——>注释处理器——> 'check'启用注释处理

希望这对大家有所帮助

如果您尝试了这里提供的所有解决方案,但仍然无法编译源代码,请查看这里:构建器类的静态导入会破坏Maven中的字节码生成——如果有这样的静态导入,请查看您的源代码。这会影响maven插件,因此在IntelliJ IDEA之外的其他构建系统上编译将失败。