在IntelliJ IDEA下使用Lombok时无法编译项目
我在使用IntelliJ IDEA 11开发的项目中尝试使用Lombok 。
我已经为IDEA安装了第三方插件,看起来工作正常,因为IDEA可以看到所有自动生成的方法/字段。
所以我有一个使用Slf4j的类。 我这样注释它
import lombok.extern.slf4j.Slf4j; @Slf4j public class TestClass { public TestClass() { log.info("Hello!"); } }
但是当我build立我的项目编译器吐出: 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
任何想法的解决方法?
Update2:也许这不是读者想要听到的,但我最终转向了Scala 。
我已经在IDEA 12中通过设置checkbox来Enable annotation processing
:
设置 – >编译器 – >注释处理器
对于IDEA 2016.2:
首选项…>构build,执行,部署>编译器>注释处理器
启用注释处理将使其工作
但是,如果您在Mac上 ,请确保从两个可用的位置启用注释处理(勾选checkbox)。
1.)Intellij Idea – > Preferences – > Compiler – > Annotation Processors
2.)文件 – >其他设置 – >默认设置 – >编译器 – >注释处理器
解决此问题的图片表示。
首先启用注释处理器并尝试。 这可能会或可能不会工作。
发布后,你可以从intellij安装lombok插件,(安装完之后Intellij会重新启动插件,所以一定要保存你的工作(Intellij在重启前保存所有的变更,只是为了安全起见)。 )截图如下:
如此处所述,引用:“您应激活外部编译器选项并启用注释处理程序或禁用外部编译器,并禁用所有注释编译器与lombok一起使用”。 这解决了我的问题。 请注意,我收到此错误之前添加了Scala插件,所以我怀疑插件更改了一些上述设置。
有一个intellij的插件。 看到这里: https : //projectlombok.org/download.html
你有你的项目依赖项目龙目吗? 在编译项目时,lombok.jar必须位于类path中,该项目使用任何的lombok注释。
如果您已按照以下步骤检查了这两个步骤
- 启用注释:这是在IntelliJ首选项中完成的检查。
- 导入lombok到IntelliJ classPath(首选项 – >插件)
并仍然收到错误,那么请检查编译器 – 如果是JAVAC或ECLIPSE 。
您可以在首选项 – >生成,执行,部署 – >编译器 – > Java编译器中检查编译器。
将使用编译器更改为Javac(如果它是Eclipse)。 这是为我工作。
对于那些仍然有困难的人:
除了启用注释处理器和安装IntelliJ Lombok插件的上述步骤之外,我还必须Build – > Rebuild Project。
在使用JDK8构build时,我遇到了类似的问题,将项目设置回JDK7并且工作正常。 可能是不能在JDK8下编译的龙目老版本。
我有同样的问题,所以我会留在这里,以供将来参考我的遗忘。
当Alt+Enter
@Slf4j
注解时,我错误地select了无效导入。 所以如果代码不能编译,请确保您导入:
import lombok.extern.slf4j.Slf4j;
FWIW – 如上所述设置编译器注释时,请确保您也检查您正在使用的任何configuration文件,例如“Maven默认注释处理器”。
这可能会发生,即使你已经正确configuration了它,并且在库和Gradle依赖列表中可见,IntelliJ仍然没有在类path中。 或者它在那里,但configuration了不同的范围(例如:testing而不是编译)。
首先,请确保已经安装了插件并启用了注释处理,正如其他答案中所述。
如果仍有注释未被识别,请将光标置于其上,按ALT + ENTER(或OPTION + ENTER),查看是否有菜单选项Add library: Gragle: org.projectlombok:lombok:VERSION to class path
。 如果你能看到它,select这个,它可以解决你的问题。
您可以检查库,它的范围在:项目设置/模块/依赖关系选项卡(在那里search龙目岛)
为了得到这个工作,只需安装IntelliJ的“Lombok Plugin”。 正如一些其他评论者所build议的那样,您不必像启用“注释处理器”那样做任何事情。 (我已经用最新版本的IntelliJ IDEAtesting了这个版本,目前是2017.1.2)。 要安装插件,请进入设置,然后select插件,然后点击“浏览存储库”button,然后search“龙目岛”,并安装龙目插件。 系统将提示您重新启动IntelliJ。 之后,您应该能够从IntelliJ编译,并且不会再收到任何错误检查。
如果您尝试了这里提供的所有解决scheme,但仍然无法编译源代码,也请看这里: 构build器类的静态导入会破坏Maven中的字节码生成 – 查看源代码是否具有静态导入。 这会影响maven插件,所以在IntelliJ IDEA之外的其他构build系统上编译将失败。
就我而言,我已经掌握了下面提到的所有内容,但仍然不起作用。
- 我有正确的安装lombok插件
- 注释处理器,也检查。
- 我的Java编译器被设置为JAVAC
为了解决我的问题,我不得不
- 于2017年10月7日将龙卷风更新至最新版本(v0.15)。
- 重新启动IntelliJ。
- 重build项目。
查看如何更新和重build项目的截图。
如何更新lombok
如何重build项目