我正在使用Lombok将日志记录添加到我的Java应用程序中。我已经使用了一段时间,但是自从我将IDE从IntelliJ 13社区版升级到14 Ultimate后,我遇到了以下编译错误(使用maven):
error: log has private access in SesameServer
字符串
此错误源于SesameServer
的子类:
@Slf4j
public class AnnotatorServices extends SesameServer {
@Override
protected void initialiseRDFStoreManager(Series<Parameter> parameters) throws RepositoryConfigException, RepositoryException {
log.info("<< ------ Annotator Services ------- >>");
}
}
型
当然,SesameServer
也使用@Slf4j
注解来添加日志记录。@Slf4j
注解添加了以下行:
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(SesameServer.class);
型
到使用它的类(SesameServer
和AnnotatorServices
,其中SesameServer.class
当然被AnnotatorServices.class
替换)。显然编译器认为我想使用来自SesameServer
的log
变量而不是AnnotatorServices
(两个类都有同名的变量)。
如何防止这个问题,即使用SesameServer.log
而不是AnnotatorServices.log
?
5条答案
按热度按时间djmepvbi1#
我从
pom.xml
重新打开一个项目后遇到了类似的问题。由于我的父类
SesameServer
已经构建在不同的模块中并使用了依赖项;当我编译AnnotatorServices
时,我还看到了error: log has private access in SesameServer
。为了解决这个问题,我只需要为包含
AnnotatorServices
的模块打开Annotation Processing。在IntelliJ Community 2017.1.6中,可以在以下位置找到复选框:
1.文件->设置
1.“构建,执行部署->编译器->注解处理器”
1.勾选**“启用注解处理”**
eoxn13cs2#
以下步骤对我有效
1.安装
Lombok Plugin
在设置=>插件下的市场搜索Lombok岛和安装。1.然后在
IntelliJ Community 2017.1.6
中转到File->Invalidate Caches/ Restart并单击两者。对我很有用。祝你好运。
bvpmtnay3#
请确保您的子类也使用@Slf4j正确注解。
eulz3vhy4#
更新您的lombok插件。有时想法不显示新的更新,所以后藤设置=>插件和搜索“lombok”点击“更新”并重新启动想法
sqserrrh5#
扩展https://stackoverflow.com/a/63693518/2252417..。
确保您在遇到错误的类中正确导入了@Slf4j。
我用
import groovy.util.logging.Slf4j;
的时候也是这样,需要换import lombok.extern.slf4j.Slf4j;
问题是通过应用Intellij的第一个导入建议引入的:)