我正在使用 Lombok 将日志记录添加到我的 Java 应用程序中。我已经使用它一段时间了,但是自从我将 IDE 从 IntelliJ 13 Community Edition 升级到 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
?
最佳答案
注意:如果其他人使用谷歌搜索此错误消息,仍然会出现此问题;所以添加我的修复程序希望这会有所帮助。
从 pom.xml
重新打开一个项目后,我遇到了类似的问题。
由于我的父类 SesameServer
已经构建在不同的模块中并使用了依赖项;当我编译我的 AnnotatorServices
时,我还看到了 error: log has private access in SesameServer
要修复它,我只需要为包含 AnnotatorServices
的模块打开 Annotation Processing。
在 IntelliJ Community 2017.1.6 中,复选框位于:
- 文件 -> 设置
- “构建、执行部署 -> 编译器 -> 注释处理器”
- 勾选“启用注释处理”
关于java - 在IntelliJ中使用Slf4j注解和Lombok时出现"log has private access"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28480278/