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

exp*_*ert 185 java intellij-idea lombok

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

为IDEA安装了第三方插件,看起来工作正常,因为IDEA会看到所有自动生成的方法/字段.

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

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class TestClass
{
    public TestClass()
    {
        log.info("Hello!");
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我构建我的项目时,编译器吐出: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
Run Code Online (Sandbox Code Playgroud)

关于变通方法的任何想法?

Update2:也许这不是读者想要听到的东西,但最终我转而使用Scala.

小智 375

我在IDEA 12中通过设置复选框修复了它Enable annotation processing:

设置 - >编译器 - >注释处理器

对于IDEA 2016.2:

首选项...>构建,执行,部署>编译器>注释处理器

  • 除了上述步骤之外,我还必须在 `build.gradle` 中包含以下几行: `annotationProcessor "org.projectlombok:lombok:1.18.8"` `testAnnotationProcessor("org.projectlombok:lombok:1.18.8")` (11认同)
  • 这在2016年对我不起作用.Maven网络项目.唯一有效的是安装lombok插件. (3认同)
  • 不要忘记设置批注处理器:lombok.launch.AnnotationProcessorHider $ AnnotationProcessor两个Maven的编译器插件和Idea(设置 - >编译器 - 译注处理器>) (2认同)

gre*_*ror 71

启用注释处理将使其工作

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

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

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

  • 即使使用最新的intellij 15.0.2,仍然必须这样做 (2认同)

Cod*_*dow 49

图片表示解决此问题.

首先启用注释处理器并尝试.这可能有效,也可能无效. 在此输入图像描述

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

在此输入图像描述

  • 谢谢..我有同样的问题。我在设置注释配置之前忘了安装插件:) (2认同)

Val*_* K. 17

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

compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok:1.18.8'
Run Code Online (Sandbox Code Playgroud)

  • 这对我有用。我使用 Kotlin DSL,我的代码如下:dependency {compileOnly("org.projectlombok:lombok:1.18.8")annotationProcessor("org.projectlombok:lombok:1.18.8") ... } (2认同)

Enr*_*age 15

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

在这里,除了安装 Lombok 插件并启用注释(由其他答案解释)。我还需要将标志-Djps.track.ap.dependencies=false设置为 Build Process Option¹。

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

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

参考:


小智 12

在 pom.xml 中包含以下内容对我有用:

<build>
        <defaultGoal>spring-boot:run</defaultGoal>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <annotationProcessorPaths>
...
                        <path>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                            <version>${lombok.version}</version>
                        </path>       
                    </annotationProcessorPaths>
                </configuration>
            </plugin>
</build>
Run Code Online (Sandbox Code Playgroud)


小智 7

如前所述这里,报价:"你应该激活外部编译器选项并启用注释处理器或禁用外部编译器并禁用所有注释的编译器与龙目岛的工作".这解决了我的问题.请注意,我在收到此错误之前添加了Scala插件,因此我怀疑该插件更改了上述某些设置.


Sau*_*aha 7

如果您已按如下方式检查这两个步骤

  1. 启用注释:这是在IntelliJ首选项中完成的检查.
  2. 将lombok导入IntelliJ classPath(首选项 - >插件)

然后仍然会收到错误请检查编译器 - 如果它是JAVACECLIPSE.

您可以在首选项 - >构建,执行,部署 - >编译器 - > Java编译器中检查编译器.

将Use编译器更改为Javac(如果它是Eclipse).这对我有用.


mt.*_*ulu 6

intellij有一个插件.见这里:https://projectlombok.org/download.html

  • 这个插件可以安装在的IntelliJ的设置/插件菜单.请确保你安装了最新的插件.升级到最新的插件为我工作. (2认同)

Hea*_*ren 6

仅供参考,使用IntelliJ 2018.3,我通过以下三个步骤解决了此问题(使用@Data批注插入getter/setter):

  1. 文件->设置->构建,执行,部署->注释处理器->启用注释处理;

在此处输入图片说明

请记住要应用更改。

  1. 在相同的设置对话框中安装插件lombok

在此处输入图片说明

  1. 现在看来已经足够好了,它需要重新启动IntelliJ,然后重建您的项目。

最好的祝愿 :)


小智 5

您是否将 lombok 作为项目的依赖项?lombok.jar 必须在项目编译期间位于类路径上,该项目使用任何 lombok-annotations。


Yev*_*iev 5

  1. 确保已将其正确添加到您的项目中。

Gradle的示例:

 dependencies {
     compileOnly 'org.projectlombok:lombok:1.18.8'
     annotationProcessor 'org.projectlombok:lombok:1.18.8'
     ...
 }
Run Code Online (Sandbox Code Playgroud)
  1. 为您的IDE安装Lombok插件
  2. 选中IDE(IntellijIdea)中的“启用批注处理”复选框,不知道其他IDE(如Eclipse)是否有类似这样的内容。

  • 天哪,我忘了 Gradle 在新版本中添加了annotationProcessor。谢谢您的回答。 (3认同)
  • 这个,这个,还有一千次。谢谢,我被困了一小时 (2认同)
  • 经过这么多解决方案后,这对我有用。添加“annotationProcessor”后,一切开始正常工作。 (2认同)