Java Lombok SLF4J impl继承问题
在我的多模块maven项目中,我面临一个与Lombok有关的问题。我有两门课:Java Lombok SLF4J impl继承问题,java,maven,slf4j,lombok,Java,Maven,Slf4j,Lombok,在我的多模块maven项目中,我面临一个与Lombok有关的问题。我有两门课: @Slf4j public class Parent {} @Slf4j public class Child extends Parent { public void m() { log.debug("hello"); } } 还有一个父maven项目,其中定义了lombok依赖项。还有一个子maven项目,其中我将父项目定义为maven父项目 在Child类中使用生成的log实
@Slf4j
public class Parent {}
@Slf4j
public class Child extends Parent {
public void m() {
log.debug("hello");
}
}
还有一个父maven项目,其中定义了lombok依赖项。还有一个子maven项目,其中我将父项目定义为maven父项目
在Child
类中使用生成的log
实例时,发生编译错误:
[ERROR] log has private access in <Child class>
[ERROR]日志在中具有私有访问权限
我可以通过两种方式解决这个问题:
- 我手工创建了名为“log”的私有字段
- 我在child maven项目中定义了Lombok依赖项
- 龙目岛1.16.18
- JDK1.8
- Maven 3.5.3
继承不应以任何方式影响您的问题。使用
@Slf4j
注释时,Lombok会创建私有静态最终
字段,而静态
字段不会被继承。在您的情况下,生成的代码如下所示:
public class Parent {
private static final Logger log = LoggerFactory.getLogger(Parent.class);
public Parent() {}
}
public class Child extends Parent {
private static final Logger log = LoggerFactory.getLogger(Child.class);
public Child() {}
public void m() {
log.debug("hello");
}
}
对于多模块maven项目,您需要确保正确指定模块间的依赖关系。如果lombok在类路径上,那么一切都应该在开箱即用的情况下正常工作。我发现了原因,子项目的依赖项树中的lombok依赖项在提供的范围内。我在dependency中添加了Lombok,然后正确地生成了该字段。Lombok应始终添加为
提供的
,否则它将在运行时类路径中结束,您不希望这样。