"日志有私人访问权限"在IntelliJ中使用Slf4j注释和Lombok时出错

时间:2015-02-12 14:40:01

标签: java slf4j lombok intellij-14

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

到使用它的类(SesameServerAnnotatorServices,其中SesameServer.class当然被AnnotatorServices.class替换。 显然,编译器认为我想使用log中的SesameServer变量而不是AnnotatorServices(两个类都具有相同名称的变量)。

如何防止此问题,即使用SesameServer.log代替AnnotatorServices.log

4 个答案:

答案 0 :(得分:1)

注意:谷歌搜索此错误消息的其他人仍然会遇到这种情况;因此添加我的修复程序希望对您有所帮助。

pom.xml重新打开一个项目后,我遇到了类似的问题。

由于我的父类SesameServer已在其他模块中构建并使用了依赖关系;当我编译AnnotatorServices时,我还看到了error: log has private access in SesameServer


要解决此问题,我只需要为包含AnnotatorServices的模块打开注释处理。

在IntelliJ Community 2017.1.6中,该复选框位于以下位置:

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

答案 1 :(得分:0)

更新您的lombok插件。有时候想法不会显示新的更新,所以goto settings =&gt;插件和搜索&#34; lombok&#34; 点击&#34;更新&#34;并重启想法

答案 2 :(得分:0)

以下步骤对我有用

  1. 在“市场”下的Settings => plugins中安装Lombok Plugin,以搜索Lombok并安装。
  2. 然后在IntelliJ Community 2017.1.6中,转到“文件”->“使缓存无效/重新启动”,然后单击两者。

帮了我大忙。一切顺利。

答案 3 :(得分:0)

确保@ Slf4j也正确注释了您的子类。