当我在IntelliJ IDEA下使用Lombok时,不能编译项目

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

我已经安装了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

297952 次浏览

您的项目有lombok依赖项吗?在编译使用任何lombok-annotation的项目期间,Lombok.jar必须位于类路径上。

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

设置→编译器→注解处理器

对于IDEA 2016.2:

首选项…>构建、执行、部署等;编译器比;注解处理器

启用后,运行构建→重建项目来识别注释并消除错误。


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

  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)。

正如在这里所指出的那样,引用:“你应该激活外部编译器选项并启用注释处理器,或者禁用外部编译器并禁用所有注释编译器来使用lombok”。这解决了我的问题。注意,我在收到这个错误之前添加了Scala插件,所以我怀疑插件更改了上面的一些设置。

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

启用注释处理将使其工作

但如果你在Mac上,确保你从可用的两个地方中启用注释处理(勾选复选框)。

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

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

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

对于那些仍然有问题的人:

除了上述启用注释处理器和安装IntelliJ Lombok插件的步骤之外,我还必须进行Build -> Rebuild Project。

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

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

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

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

解决此问题的图片表示。

首先启用注释处理器并尝试。这可能有用,也可能没用。 enter image description here < / p >

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

enter image description here

如果您已勾选以下两个步骤

  1. 启用注释:这是在IntelliJ中完成的检查 偏好。李< / >
  2. 导入lombok到IntelliJ类路径 (首选项->插件)

并且仍然得到错误,则请检查编译器 -如果它是JAVACECLIPSE

您可以在“首选项->构建,执行,部署->编译器-> Java编译器”中查看编译器。

将Use编译器更改为Javac(如果它是Eclipse)。这对我来说很管用。

要让它工作,只需为IntelliJ安装“Lombok Plugin”。您不需要像其他一些注释者建议的那样启用“Annotation Processors”。(我已经用最新版本的IntelliJ IDEA进行了测试,目前是2017.1.2)。要安装插件,请转到设置,然后是插件,然后单击“浏览存储库”按钮,然后搜索“Lombok”,并安装Lombok插件。系统将提示您重新启动IntelliJ。之后,您应该能够从IntelliJ编译,并且您不会再收到任何错误检查。

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

以我为例,我把下面提到的所有东西都准备好了,但它仍然不能工作。

  1. 我已经正确安装了lombok插件
  2. 注释处理器,也勾选。
  3. 我的Java编译器设置为JAVAC

为了解决我的问题,我不得不这么做

  1. 在2017年10月7日将lombok更新到最新版本(v0.15)。
  2. IntelliJ重启。
  3. 重建项目。

关于如何更新和重建项目,请参见下面的截图。

如何更新lombok

如何重建项目

1、为IDEA安装lombok插件

Intellij Idea -> Preferences -> Plugins -> type in lombok -> Search in Repositories -> install -> restart Idea

2、配置lombok插件

启用注释处理将使其工作

但如果你使用的是Mac,请确保在以下两个地方启用了注释处理:

Intellij Idea -> Preferences -> Build, Execution, Deployment -> Compiler -> Annotation Processors,选中“Enable Annotation processing”复选框。 文件->其他设置->默认设置->构建、执行、部署->编译器->标注处理器,选中“启用标注处理”复选框

我在Mac

这是我的IntelliJ IDEA和Mac版本- IntelliJ IDEA 2017.1.5 Build #IU-171.4694.70 - Mac OS X 10.12

除了在这两个地方启用注释处理(勾选复选框)之外。

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

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

我不得不安装Lombok插件也使其工作。

3)。Intellij IDEA ->首选项->插件->浏览存储库->搜索“Lombok”->安装插件->应用并重新启动IDEA

上面的任何一个解决方案都对我不起作用。我在pom.xml中的依赖项中添加了<scope>provided</scope>,它工作了。

<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.20</version>
<scope>provided</scope>
</dependency>

你可以在IntelliJ IDEA 2017.1.3中使用lombok时修复cannot find symbol variable log:

IntelliJ首选项>构建,执行,部署>注释 Processors >[检查]启用注释处理> Apply

. notes注释

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

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

启用注释处理器:

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

我也遇到过类似的问题。下面的方法对我很有效。

下载(从这里https://projectlombok.org/download)并在你的项目结构中添加jar。

步骤:文件->项目结构->全局库

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

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

enter image description here

请记住< em > < /应用em >更改。

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

enter image description here

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

祝福你:)

我在更新IDEA到2018.3后就遇到了这个问题。我不得不更新所有现有的插件

  1. 确保它被正确地添加到项目中。

Gradle的例子:

 dependencies {
compileOnly 'org.projectlombok:lombok:1.18.8'
annotationProcessor 'org.projectlombok:lombok:1.18.8'
...
}
  1. 为您的IDE安装Lombok插件
  2. 在IDE (IntellijIdea)中勾选“启用注释处理”复选框,不知道其他IDE(如Eclipse)中是否有类似的东西。

如果正确地设置了lombok库,就像上面提到的那样,单击无法编译的注释,按Alt-Enter键,将出现正确的导入,代码将被编译。-我花了一段时间才弄明白。我把它放在这里,只是为了防止人们错过简单明显的东西。

对于MacOS上的Eclipse用户,执行此操作。这对我很管用。

  1. 将lombok.jar复制到Eclipse.app/Contents/MacOS目录。
  2. -javaagent:lombok.jar添加到Eclipse.app/Contents/Eclipse/ Eclipse. ini文件的末尾。
  3. 重新启动Eclipse并启用项目属性中的“Annotation Processing”。

引用

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

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

在尝试了这里所有的建议之后,我也找到了另一种解决方案。有时IDEA似乎无法从项目类路径获取处理器。

所以,在注解处理器设置选项卡上,你必须手动指定处理器的路径

除了在所有答案中提到的,我必须在pom.xml配置中添加以下代码,以使mvn清洁安装工作。在添加这段代码之前,我得到了getter和setter的无法找到符号。

                    <annotationProcessorPath>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
</annotationProcessorPath>

对我来说奏效的是:

  1. 我卸载了安装龙目岛插件新鲜
  2. 勾选“启用注释插件”
  3. 在同一页中,我选择了“从项目类路径获取处理器”

对于IntelliJ IDEA 2020.1.1启用Kotlin插件修复了此问题。

在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>
如果这个问题中提到的你做了一切和你的项目下的它还是失败了不要忘记删除/目标文件夹。如果仍然失败,重新启动IDE。 如果它仍然失败,重新启动您的计算机

启用注释器处理器后,我必须更新到最新版本的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

我使用的是IntelliJ IDEA 2020.3(社区版)

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

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

¹。转到:文件|设置|构建,执行,部署|编译| "共享构建过程虚拟机选项"场

引用:

Jetbrains IntelliJ IDEA编辑器在2020.3版本不需要插件的情况下与lombok兼容。

我使用的是2020.2版本,我更新到2020.3,它就像这样工作。

我想我还没有读到答案中的最后一步。(Mac + IntelliJ终极版2020.1) 在我的情况下,这只是一个愚蠢的原因,但这些是可以占用大部分时间的错误,因为错误并不直接指向它 在删除和重新克隆项目后,我出现了相同的lombok错误。 在做了这个线程中前面提到的步骤后,我仍然有错误,然后我发现我的SKD默认为版本11。我把它改回1.8,一切都恢复正常了 < p >文件——比;项目设置——>项目 我将项目SDK和项目语言级别更改为1.8

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

. ' /p> .

希望这对大家有所帮助

我遇到这种情况是因为运行构建过程的JDK版本太低了。Lombok是使用JDK 1.7或更高版本构建的。构建必须使用Java 1.7或更高版本运行。

enter image description here

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

如果以上都不行,那么尝试更改文件-项目结构-项目-项目语言水平>8 Lambda,类型注释(非SDK默认8)

这对我很管用。

  1. 添加龙目岛插件。
  2. 对我来说,就是maven clean。

我的问题是IntelliJ IDEA中捆绑的Lombok插件版本与IntelliJ IDEA本身的版本不兼容。我把IntelliJ降级到2019.1.4,它起作用了。

enter image description here

我尝试启用lambok,重新启动intellij等,但下面对我有用。

Intellij首选项->共享构建流程虚拟机选项,设置为

  -Djps.track.ap.dependencies=false

比跑

mvn clean install

如果你已经安装了它,那么刷新只需在Intellij设置中的取消选择选择 Enable annotation