我在多模块Maven项目中遇到Lombok的问题。我有两节课:
@Slf4j
public class Parent {}
@Slf4j
public class Child extends Parent {
public void m() {
log.debug("hello");
}
}
还有一个父Maven项目,其中定义了lombok依赖项。还有一个子Maven项目,其中我将父项目定义为Maven父项。
当我在log
类中使用生成的Child
实例时,发生编译错误:
[ERROR] log has private access in <Child class>
我可以通过两种方式解决该问题:
为什么呢?有什么解决方法/定义lombok依赖项的最佳方法吗?
感谢您的帮助。
使用:
答案 0 :(得分:1)
继承不会以任何方式影响您的问题。当您使用@Slf4j
批注时,Lombok会创建private static final
字段,而static
字段不会被继承。在您的情况下,生成的代码如下所示:
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在类路径中,那么开箱即用就可以正常工作。
答案 1 :(得分:0)
我发现了为什么子项目的依赖项树中的Lombok依赖项在提供的范围内。我在依赖项中添加了Lombok,然后正确生成了该字段。