java - 在IntelliJ中使用Slf4j注解和Lombok时出现"log has private access"错误

标签 java slf4j lombok intellij-14

我正在使用 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);

到使用它的类(SesameServerAnnotatorServices,其中 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 中,复选框位于:

  1. 文件 -> 设置
  2. “构建、执行部署 -> 编译器 -> 注释处理器”
  3. 勾选“启用注释处理”

关于java - 在IntelliJ中使用Slf4j注解和Lombok时出现"log has private access"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28480278/

相关文章:

java - 从 java 10 升级到 java 11,从 gradle 4.10 升级到 gradle。 5.2 : "Variable not initialized in the default constructor"

java - Lombok 无法在 Mac 10.11.3 上的 Eclipse Mars 上运行

xml - 将日期添加到 logback.xml

maven - 如何配置 Intellij 日志级别以调试 Maven 输出

java - 在java中突出显示单词

java - 使用 Jax WS 获取响应 header

java - 如何强制Java显示完整的堆栈跟踪

java - 如何使用 lombok 在 @NonNull 异常中抛出我自己的自定义消息?

java - 改变多维树的 "perspective"

java - 递增图像的 x 位置然后递减它在 java 中不起作用