在intellij idea下使用lombok时无法编译项目

rkkpypqq  于 2021-06-29  发布在  Java
关注(0)|答案(26)|浏览(736)

我尝试在我的项目中使用lombok,我正在使用intellijidea11开发。
我已经为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。

u59ebvdq

u59ebvdq1#

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

k0pti3hp

k0pti3hp2#

上述解决方案对我都不起作用。我补充道 <scope>provided</scope> 找到pom.xml中的依赖项,它就成功了。

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

ru9i0ody3#

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

zynd9foi

zynd9foi4#

1、 为idea安装lombok插件
intellij idea->首选项->插件->在lombok中键入->在存储库中搜索->安装->重新启动idea
2、 配置lombok插件
启用注解处理将使其工作
但是,如果您在mac上,请确保在以下两个位置启用注解处理:
intellij idea->preferences->build,execution,deployment->compiler->annotation processors,选中“enable annotation processing”复选框。文件->其他设置->默认设置->构建、执行、部署->编译器->注解处理器,选中“启用注解处理”复选框。

hiz5n14c

hiz5n14c5#

在尝试了这里的所有建议之后,我也找到了另一种解决方案。有时idea似乎无法从项目类路径获得处理器。
因此,在“注解处理器设置”选项卡上,必须手动指定处理器路径。

ktecyv1j

ktecyv1j6#

fwiw-在如上所述设置编译器注解时,请确保还检查了正在使用的任何概要文件,例如“maven default annotations processors”。

djp7away

djp7away7#

可能发生的情况是,即使您正确地配置了它,并且它在库和gradle dependencies列表中可见,intellij在类路径中仍然没有它。或者它在那里,但配置了不同的作用域(例如:test而不是compile)
首先,确保您已经安装了插件并启用了注解处理,如其他答案中所述。
如果仍无法识别注解,请将光标放在注解上,按alt+enter(或option+enter)并查看是否有菜单选项 Add library: Gragle: org.projectlombok:lombok:VERSION to class path . 如果你能看到它,选择这个,它可能会解决你的问题。
您可以在“项目设置/模块/依赖项”选项卡中检查库及其范围(在其中搜索lombok)

ktecyv1j

ktecyv1j8#

在将想法更新到2018.3之后,我遇到了这个问题。我必须更新所有现有的插件

llmtgqce

llmtgqce9#

我正在使用intellij idea 2020.3(社区版)
在这里,除了安装lombok插件和启用注解(由其他答案解释)。我还需要设置国旗 -Djps.track.ap.dependencies=false 到生成过程选项¹.
我不需要使用-javaagent方法,也不需要设置类路径。
¹. 转到:file | settings | build,execution,deployment | compiler |“shared build process vm options”字段
参考文献:
https://github.com/rzwitserloot/lombok/issues/2592#issuecomment-705449860
https://youtrack.jetbrains.com/issue/idea-250718#focus=评论-27-4418347.0-0

hwazgwia

hwazgwia10#

我在idea 12中通过设置复选框解决了这个问题 Enable annotation processing 在:
设置->编译器->注解处理器
对于idea 2016.2:
首选项…>构建、执行、部署>编译器>注解处理器
启用后,运行build->rebuild project以识别注解并消除错误。
对于idea 2019.2.1,根据项目的配置,安装project lombok插件可能不够。下面是另一种将lombok项目与intellij idea结合使用的方法:
访问https://projectlombok.org/download
将jar文件下载到project lib目录中(例如。, $HOME/dev/java/project/libs ).
启动ide。
单击“文件”?设置。
扩展构建、执行、部署?编译器?注解处理器。
确保选中“启用注解处理”。
确保根据项目的模块设置选择了存储生成相对于的源(如果模块输出目录不起作用,请返回并尝试其他设置)。
单击应用。
单击插件。
单击市场。
将搜索字段设置为: lombok 安装lombok。
单击“确定”。
如果出现提示,请重新启动ide。
单击“文件”?项目设置。
选择库。
单击+符号添加新的项目库(或按alt+insert)。
选择java。
将路径设置为: $HOME/dev/java/project/libs/lombok.jar 单击“确定”。
选择要应用的模块。
单击“确定”。
(可选)重命名 lombokProject Lombok 1.18.8 .
单击“确定”。
项目现在可以从 lombok 打包并使用lombok项目注解(例如。, lombok.Setter 以及 lombok.Getter ).

cbeh67ev

cbeh67ev11#

在我的情况下,我已经把下面提到的所有东西都准备好了,但仍然不起作用。
我已经正确安装了lombok插件
注解处理器,也已选中。
我的java编译器被设置为javac
为了解决我的问题我不得不
于2017年10月7日将lombok更新至最新版本(v0.15)。
重新启动intellij。
重建项目。
请参阅下面有关如何更新和重建项目的屏幕截图。
如何更新lombok
如何重建项目

wi3ka0sx

wi3ka0sx12#

在最新的gradle版本中,您应该使用annotationprocessor:

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

h6my8fg213#

在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>
watbbzwu

watbbzwu14#

你可以修理 cannot find symbol variable log 在intellij idea 2017.1.3中使用lombok时:
intellij首选项

dsf9zpds

dsf9zpds15#

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

相关问题