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

6bc51xsx  于 11个月前  发布在  Java
关注(0)|答案(5)|浏览(143)

我正在使用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替换)。显然编译器认为我想使用来自SesameServerlog变量而不是AnnotatorServices(两个类都有同名的变量)。
如何防止这个问题,即使用SesameServer.log而不是AnnotatorServices.log

djmepvbi

djmepvbi1#

  • 注意:这仍然出现在任何其他人谷歌这个错误消息;所以添加我的修复希望这有帮助。

我从pom.xml重新打开一个项目后遇到了类似的问题。
由于我的父类SesameServer已经构建在不同的模块中并使用了依赖项;当我编译AnnotatorServices时,我还看到了error: log has private access in SesameServer
为了解决这个问题,我只需要为包含AnnotatorServices的模块打开Annotation Processing。
在IntelliJ Community 2017.1.6中,可以在以下位置找到复选框:
1.文件->设置
1.“构建,执行部署->编译器->注解处理器”
1.勾选**“启用注解处理”**

eoxn13cs

eoxn13cs2#

以下步骤对我有效
1.安装Lombok Plugin在设置=>插件下的市场搜索Lombok岛和安装。
1.然后在IntelliJ Community 2017.1.6中转到File->Invalidate Caches/ Restart并单击两者。
对我很有用。祝你好运。

bvpmtnay

bvpmtnay3#

请确保您的子类也使用@Slf4j正确注解。

eulz3vhy

eulz3vhy4#

更新您的lombok插件。有时想法不显示新的更新,所以后藤设置=>插件和搜索“lombok”点击“更新”并重新启动想法

sqserrrh

sqserrrh5#

扩展https://stackoverflow.com/a/63693518/2252417..
确保您在遇到错误的类中正确导入了@Slf4j。
我用import groovy.util.logging.Slf4j;的时候也是这样,需要换import lombok.extern.slf4j.Slf4j;
问题是通过应用Intellij的第一个导入建议引入的:)

相关问题