我有一个Kotlin Gradle项目。我添加了Lombok作为依赖项,并使用kapt
注册了它compileOnly("org.projectlombok:lombok:$lombokVersion")
kapt("org.projectlombok:lombok:$lombokVersion")
我想仅使用@Slf4j
anotation进行自动log
生成。它适用于Java类,但不适用于Kotlin类。
到目前为止,甚至可以将Kotling和Lombok一起使用吗?
编辑:添加更多详细信息
如果我使用@Slf4j
注释Kotlin类并在其中使用log
,我会得到
未解决的参考:日志
显然没有应用注释处理。
答案 0 :(得分:5)
Lombok不会在您的源代码上运行,而是在AST上运行。无论如何,它是一个由Java编译器在编译时运行的注释处理器。 Kotlin编译器不使用这些注释处理器。也可以直接从马的嘴里看到答案https://stackoverflow.com/a/35530223/2621917。
答案 1 :(得分:1)
它不受支持,而且从事物的外观来看,it isn't going to be。
答案 2 :(得分:1)
您不能使用注释@Slf4j
,而是在所需的类中手动创建其对象。
引用https://www.reddit.com/r/Kotlin/comments/8gbiul/slf4j_loggers_in_3_ways/
答案 3 :(得分:0)
如果您要使用Lombok的全部是@ Slf4j,那么我建议使用kotlin-logging代替:https://github.com/MicroUtils/kotlin-logging
答案 4 :(得分:0)
为记录日志,我能做的最好-因为@Slf4j
不起作用-就像创建抽象的日志类,如:
package org.example
import org.slf4j.LoggerFactory
import org.slf4j.Logger
abstract class Log {
val log: Logger = LoggerFactory.getLogger(this.javaClass)
}
和用法:
package org.example
class MyClass {
companion object : Log() {}
@Test
fun someFun() {
log.info("Logging info")
}
}
答案 5 :(得分:-1)
如果没有lombok团队的额外支持,我看不出它会如何运作。 Lombok基于注释处理,因此它在编译期间运行并在源代码上运行,因此我猜它假定Java的语法。