Intellij idea 带有龙目山和x27的建筑;s@Slf4j和Intellij:找不到符号日志
我有一个maven项目,从命令行构建时没有问题。但是,当我用IntelliJ构建它时,我得到了一个错误:Intellij idea 带有龙目山和x27的建筑;s@Slf4j和Intellij:找不到符号日志,intellij-idea,slf4j,lombok,Intellij Idea,Slf4j,Lombok,我有一个maven项目,从命令行构建时没有问题。但是,当我用IntelliJ构建它时,我得到了一个错误: java: FileName.java:89: cannot find symbol symbol : variable log java文件中没有定义或导入日志,但存在 @Slf4j final public class FileName { 类主体前的语句,该语句应定义日志类 在“项目结构”窗口中,为以下对象创建类: Maven: org.slf4j:jcl-over-slf4j:
java: FileName.java:89: cannot find symbol
symbol : variable log
java文件中没有定义或导入日志,但存在
@Slf4j
final public class FileName {
类主体前的语句,该语句应定义日志类
在“项目结构”窗口中,为以下对象创建类:
Maven: org.slf4j:jcl-over-slf4j:1.6.1
Maven: org.slf4j:slf4j-api:1.6.6
Maven: org.slf4j:slf4j-log4j12:1.6.6
Maven: org.slf4j:slf4j-simple:1.6.6
在库下列出,并表示已下载并可用
你知道为什么要通过命令行而不是IntelliJ使用maven来构建这个问题吗?以及如何解决这个问题吗?这大概就是你正在使用的注释。如果希望IntelliJ识别Lombok注释,则需要在IntelliJ中安装Lombok插件。否则,如果您试图使用不存在的字段,您会有什么期望?除此之外,还要确保在以下项下勾选“启用注释处理”
”复选框:
Preferences > Compiler > Annotation Processors
注意:从IntelliJ 2017开始,“启用注释处理
”复选框已移至:
Settings > Build, Execution, Deployment > Compiler > Annotation Processors
在IDEA 13中,这似乎不再是一个问题,您只需要安装Lombok插件。我可能是一个死板的话题,但一个简单的解决方案是检查您的依赖项(例如Maven的pom),如果您包括logback core和logback classic Slf4j只是一个接口,您需要它背后的具体实现才能工作
我已经被想法欺骗了两次,现在我可以走了:D在JDK8下编译时,我在旧版本的Lombok中看到了这个问题。将项目设置回JDK7解决了这个问题。在Intellij 2016、2017版中,启用首选项->编译器->注释处理器对我不起作用 以下附加复选框有助于:2019: 得到一个插件,你就可以排序了 文件>设置>插件
我刚刚安装了最新的idea verion 2108.1,在安装lombok插件并重新启动idea后发现了这个问题。这对我来说很有效:
文件->设置->构建、执行、部署->编译器->注释处理器
勾选“启用注释处理”。
应用
关闭这不会是OP的问题,但对于任何尝试一切都没有成功的人来说: 我也有类似的症状。每当我在
mvn clean
之后构建时,它都找不到log
,或getXYZ()
,或builder()
,或任何东西
[ERROR] symbol: variable log
[ERROR] location: class com.example.MyClass
[ERROR] /Path/To/Some/Java/src/main/com/example/MyClass.java:[30,38] cannot find symbol
[ERROR] symbol: method builder()
[ERROR] location: class com.example.MyClass
在阅读了所有关于QueryDSL/JPA/Hibernate/Lombok/IntelliJ/Maven问题的答案后,我发现罪魁祸首是在静态字段上注释的@Getter
方法的单个静态导入
Spring 1.15.14.1发布,Intellij 2019.1.1
启用注释处理器并安装lombok插件后,它仍然无法工作。我们通过检查“将IDE构建委托给gradle”的想法选项来解决这个问题。对我来说很有效!!!这在CircleCI和Jenkins身上都失败了 如果您是Gradle用户,请尝试将以下内容添加到依赖项中:
dependencies {
//Other Dependencies >>
//LOMBOK Dependencies
annotationProcessor 'org.projectlombok:lombok'
compileOnly 'org.projectlombok:lombok'
testAnnotationProcessor 'org.projectlombok:lombok'
testCompileOnly 'org.projectlombok:lombok'
}
对我来说,解决问题的办法是在Maven设置中勾选“使用插件注册表”复选框
路径是:文件->首选项->构建、执行、部署->构建工具->Maven我尝试了几乎所有提到的答案,但没有任何效果。我的渐变身材每次都会失败。刚刚找到了这个解决方案: 添加注释处理器“org.projectlombok:lombok” 以你的身材,格雷德尔
这对我有用 从类中删除@Slf4J注释,然后重新添加它对我很有效。1我的gradle lombok依赖项:
implementation 'org.projectlombok:lombok:1.18.10'
annotationProcessor 'org.projectlombok:lombok:1.18.10'
2在IDEA(设置)中启用“注释…”后,考虑到您已经安装了Lombok插件,这解决了我的问题,但它不是IntelliJ问题。如果您尝试在控制台下运行mvn安装,也会中断。lombok.extern中的所有注释都需要添加依赖项。此包将下一个注释分组:
- 公共日志
- 鞭子
- 日志
- JBossLog
- 日志4
- Log4j2
- Slf4j
- XSlf4j
org.slf4j
slf4j api
${slf4j.version}
如果您使用的是maven,请尝试将Lombok路径添加到maven编译器插件
注释处理器列表中,如下所示
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<annotationProcessorPaths>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.3.0.Final</version>
</path>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
org.apache.maven.plugins
删除每个模块中的.idea文件夹和.iml文件并重建解决方案。我有Lombok插件,启用了注释,它是从命令行编译的-所有内容,但它仍然没有将我的项目视为maven(源文件中所有maven依赖项都是红色的)。然后我点击SHIFT两次,搜索“maven”,结果中有“reloadallmaven项目”。运行它之后,出现了Maven选项卡,我可以编译了,源代码中的所有红色下划线都消失了。一件简单的事情,但我发现了:我没有将@Log
添加到类中
@Log
public class YourClassName {
}
它可能会帮助某些人。我也有同样的问题;我使用gradle和IDEA
事实证明,这是由格雷德尔的错误版本造成的
在gradle\wrapper\gradle-wrapper.properties中,它是:
distributionUrl=https\://services.gradle.org/distributions/gradle-4.8-bin.zip
但是,我在IDEA中指定的版本是
D:\Library\gradle-5.2.1
将gradle版本降低到4.10.x后,问题就消失了。尝试在项目基础目录下创建lombok.config
文件,并提供lombok.log.fieldName
值
implementation 'org.projectlombok:lombok:1.18.10'
annotationProcessor 'org.projectlombok:lombok:1.18.10'
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<annotationProcessorPaths>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.3.0.Final</version>
</path>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
@Log
public class YourClassName {
}
compileOnly 'org.projectlombok:lombok:1.18.12'
annotationProcessor 'org.projectlombok:lombok:1.18.12'
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.30</version>
</dependency>