【发布时间】:2015-02-12 14:40:01
【问题描述】:
我正在使用 Lombok 将日志记录添加到我的 Java 应用程序。我已经使用了一段时间,但是自从我将我的 IDE 从 IntelliJ 13 Community 版升级到 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?
【问题讨论】:
-
AnnotatorServices.this.log -
重建,这应该按原样工作。
-
@xTrollxDudex 不幸的是没有。
-
@RC。通常我使用maven进行编译。如果我在 IntelliJ 中进行重建,我仍然会得到相同的错误,但有一些额外的信息:警告:(23、8)java:由于(很可能)类加载器问题而无法初始化 javac 处理器:java.lang。 NoClassDefFoundError: com/sun/tools/javac/code/TypeTags 在 lombok.javac.Javac.
(Javac.java:104) 在 lombok.javac.handlers.HandleGetter. (HandleGetter.java:294)。 .. 引起:java.lang.ClassNotFoundException: com.sun.tools.javac.code.TypeTags at java.net.URLClassLoader$1.run(URLClassLoader.java:372) ...
标签: java slf4j lombok intellij-14