我试图在我的项目中使用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。


当前回答

我也遇到过同样的问题,但这里给出的答案都对我没用。我在导入龙目岛上得到的错误消息。val进口:

intellij lombok cannot resolve symbol

我使用的是IntelliJ“IDEA 2022.3.1(社区版)”。显然IntelliJ扫描类路径进行注释处理,所以添加lombok不仅用于编译,还用于运行时,对我来说很有效:

Use

implementation 'org.projectlombok:lombok'

而不是

compileOnly 'org.projectlombok:lombok'

其他回答

在最新的Gradle版本中,你应该使用注解处理器:

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

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

启用注释处理将使其工作

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

1)。Intellij Idea ->首选项->编译器->注释处理器

2)。File ->其他设置->默认设置-> Compiler -> Annotation Processors

安装以下插件并重新启动IDE以解决错误:

File -> Settings -> Plugins-> Browse Repositories -> Lombok Plugin

启用注释处理器:

File -> Settings -> Build, Execution, Deployment -> Compiler -> Annotation Processors
File -> Other Settings -> Default Settings -> Compiler -> Annotation Processors

如果以上都没有工作,然后尝试更改文件->项目结构->项目->项目语言级别> 8 Lambda,类型注释(非SDK默认8)

这对我很管用。