Java Can';I'时不编译项目;我在IntelliJ IDEA下使用Lombok
我正在尝试在我的项目中使用IntelliJ IDEA 11进行开发 我已经安装了,它似乎工作正常,因为IDEA可以看到所有自动生成的方法/字段 所以我有一个使用Slf4j的类。我这样注释它Java Can';I'时不编译项目;我在IntelliJ IDEA下使用Lombok,java,intellij-idea,lombok,Java,Intellij Idea,Lombok,我正在尝试在我的项目中使用IntelliJ IDEA 11进行开发 我已经安装了,它似乎工作正常,因为IDEA可以看到所有自动生成的方法/字段 所以我有一个使用Slf4j的类。我这样注释它 import lombok.extern.slf4j.Slf4j; @Slf4j public class TestClass { public TestClass() { log.info("Hello!"); } } 但是当我构建我的项目编译
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class TestClass
{
public TestClass()
{
log.info("Hello!");
}
}
但是当我构建我的项目编译器时,无法找到符号变量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:也许读者不想听到,但我最终选择了。您的项目是否依赖lombok?编译使用任何lombok注释的项目时,lombok.jar必须位于类路径上。是否将lombok作为项目的依赖项?编译使用任何lombok注释的项目时,lombok.jar必须位于类路径上。我在IDEA 12中通过在以下位置设置复选框
启用注释处理来修复它:
设置->编译器->注释处理器
对于IDEA 2016.2:
首选项…>生成、执行、部署>编译器>注释处理器
启用后,运行Build->Rebuild Project以识别注释并消除错误
对于IDEA 2019.2.1,根据项目的配置,安装project Lombok插件可能不够。下面是将Project Lombok与IntelliJ IDEA结合使用的另一种方法:
拜访
将JAR文件下载到projectlib目录中(例如,$HOME/dev/java/project/libs
)
启动IDE
单击文件我已在IDEA 12中通过在以下位置设置复选框启用注释处理将其修复:
设置->编译器->注释处理器
对于IDEA 2016.2:
首选项…>生成、执行、部署>编译器>注释处理器
启用后,运行Build->Rebuild Project以识别注释并消除错误
对于IDEA 2019.2.1,根据项目的配置,安装project Lombok插件可能不够。下面是将Project Lombok与IntelliJ IDEA结合使用的另一种方法:
拜访
将JAR文件下载到projectlib目录中(例如,$HOME/dev/java/project/libs
)
启动IDE
单击文件如前所述,引用:“您应该激活外部编译器选项并启用注释处理器,或者禁用外部编译器并禁用所有注释编译器以使用lombok”。这解决了我的问题。请注意,我在收到此错误之前添加了Scala插件,因此我怀疑该插件更改了上面的一些设置。如前所述,引用:“您应该激活外部编译器选项并启用注释处理器,或者禁用外部编译器并禁用所有注释编译器以使用lombok”。这解决了我的问题。请注意,我在收到此错误之前添加了Scala插件,因此我怀疑该插件更改了上面的一些设置。我在使用JDK8构建时遇到类似问题,将项目设置回JDK7,效果良好。可能是Lombok的旧版本,无法在JDK8下编译。我在使用JDK8构建时遇到了类似问题,将项目设置回JDK7,它工作正常。可能是Lombok的旧版本,无法在JDK8下编译。启用注释处理将使其正常工作
但是,如果您使用的是Mac,请确保从两个可用位置启用注释处理(勾选复选框)
1.)Intellij Idea->首选项->编译器->注释处理器
2.)文件->其他设置->默认设置->编译器->注释处理器启用注释处理将使其正常工作
但是,如果您使用的是Mac,请确保从两个可用位置启用注释处理(勾选复选框)
1.)Intellij Idea->首选项->编译器->注释处理器
2.)文件->其他设置->默认设置->编译器->注释处理器有一个intellij插件。请参见此处:有一个intellij插件。请参见此处:对于仍有问题的人:
除了上述启用注释处理器和安装IntelliJ Lombok插件的步骤外,我还必须构建->重建项目。对于仍有问题的人:
除了上述启用注释处理器和安装IntelliJ Lombok插件的步骤外,我还必须构建->重建项目。可能发生的情况是,即使您正确配置了它,并且它在库和Gradle dependencies列表中可见,IntelliJ在类路径中仍然没有它。或者它在那里,但配置了不同的作用域(例如:test而不是compile)
首先,确保安装了插件并启用了注释处理,如其他答案中所述
如果仍然无法识别注释,请将光标放在注释上,按ALT+ENTER(或OPTION+ENTER),然后查看是否有菜单选项添加库:Gragle:org.projectlombok:lombok:VERSION to class path
。如果你能看到它,选择这个,它可能会解决你的问题
您可以在以下位置查看库及其范围:
项目设置/模块/依赖项选项卡(在其中搜索lombok)可能发生的情况是,即使您正确配置了它,并且它在库和渐变依赖项列表中可见,IntelliJ仍然没有在类路径中包含它。或者它在那里,但配置了不同的作用域(例如:test而不是compile)
首先,确保已安装插件
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.20</version>
<scope>provided</scope>
</dependency>
File -> Settings -> Plugins-> Browse Repositories -> Lombok Plugin
File -> Settings -> Build, Execution, Deployment -> Compiler -> Annotation Processors
File -> Other Settings -> Default Settings -> Compiler -> Annotation Processors
dependencies {
compileOnly 'org.projectlombok:lombok:1.18.8'
annotationProcessor 'org.projectlombok:lombok:1.18.8'
...
}
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok:1.18.8'
<annotationProcessorPath>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
</annotationProcessorPath>
<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>