IntelliJ 在新的 Ktor 项目中缺少对 slf4j 的引用
IntelliJ missing reference to slf4j in new Ktor project
我通过他们的 IntelliJ 插件启动了一个新的 Ktor 项目,一切都在编译,运行与 Gradle 配合得很好。然而,在 IntelliJ 中,所有引用 slf4j 记录器的东西都有一个 Unresolved reference: ...
错误。
我的导入和设置日志级别如下所示(抱歉,我的声誉不够高,无法 post 图片):
生成的项目具有以下依赖关系
// gradle.properties
ktor_version=1.4.0
logback_version=1.2.1
// build.gradle.kts
dependencies {
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version")
implementation("io.ktor:ktor-server-netty:$ktor_version")
implementation("ch.qos.logback:logback-classic:$logback_version")
implementation("io.ktor:ktor-server-core:$ktor_version")
implementation("io.ktor:ktor-auth:$ktor_version")
implementation("io.ktor:ktor-auth-jwt:$ktor_version")
implementation("io.ktor:ktor-jackson:$ktor_version")
testImplementation("io.ktor:ktor-server-tests:$ktor_version")
}
我尝试将 org.slf4j:slf4j-nop:1.7.30
添加到我的依赖项中,但没有成功。
所以我的问题是,有没有人以前见过这个错误并且知道是否有依赖项或设置我可以更改?没有任何代码完成和错误分散在 IDE 周围是很烦人的,即使它编译并且 运行 很好。
如果需要,使用 Ktor 插件生成的完整应用程序代码如下:
package com.example
import io.ktor.application.*
import io.ktor.response.*
import io.ktor.request.*
import io.ktor.features.*
import org.slf4j.event.*
import io.ktor.routing.*
import io.ktor.http.*
import io.ktor.auth.*
import com.fasterxml.jackson.databind.*
import io.ktor.jackson.*
fun main(args: Array<String>): Unit = io.ktor.server.netty.EngineMain.main(args)
@Suppress("unused") // Referenced in application.conf
@kotlin.jvm.JvmOverloads
fun Application.module(testing: Boolean = false) {
install(CallLogging) {
level = Level.INFO
filter { call -> call.request.path().startsWith("/") }
}
install(Authentication) {
}
install(ContentNegotiation) {
jackson {
enable(SerializationFeature.INDENT_OUTPUT)
}
}
routing {
get("/") {
call.respondText("HELLO WORLD!", contentType = ContentType.Text.Plain)
}
get("/json/jackson") {
call.respond(mapOf("hello" to "world"))
}
}
}
这是 Gradle 和 IntelliJ 的缓存问题,可能是由其他项目依赖项引起的。对于 IntelliJ,slf4j-api
库是空的。使用 rm -rf ~/.gradle/caches
和 re-download 依赖项删除全局 Gradle 缓存为我解决了这个问题。
我通过他们的 IntelliJ 插件启动了一个新的 Ktor 项目,一切都在编译,运行与 Gradle 配合得很好。然而,在 IntelliJ 中,所有引用 slf4j 记录器的东西都有一个 Unresolved reference: ...
错误。
我的导入和设置日志级别如下所示(抱歉,我的声誉不够高,无法 post 图片):
生成的项目具有以下依赖关系
// gradle.properties
ktor_version=1.4.0
logback_version=1.2.1
// build.gradle.kts
dependencies {
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version")
implementation("io.ktor:ktor-server-netty:$ktor_version")
implementation("ch.qos.logback:logback-classic:$logback_version")
implementation("io.ktor:ktor-server-core:$ktor_version")
implementation("io.ktor:ktor-auth:$ktor_version")
implementation("io.ktor:ktor-auth-jwt:$ktor_version")
implementation("io.ktor:ktor-jackson:$ktor_version")
testImplementation("io.ktor:ktor-server-tests:$ktor_version")
}
我尝试将 org.slf4j:slf4j-nop:1.7.30
添加到我的依赖项中,但没有成功。
所以我的问题是,有没有人以前见过这个错误并且知道是否有依赖项或设置我可以更改?没有任何代码完成和错误分散在 IDE 周围是很烦人的,即使它编译并且 运行 很好。
如果需要,使用 Ktor 插件生成的完整应用程序代码如下:
package com.example
import io.ktor.application.*
import io.ktor.response.*
import io.ktor.request.*
import io.ktor.features.*
import org.slf4j.event.*
import io.ktor.routing.*
import io.ktor.http.*
import io.ktor.auth.*
import com.fasterxml.jackson.databind.*
import io.ktor.jackson.*
fun main(args: Array<String>): Unit = io.ktor.server.netty.EngineMain.main(args)
@Suppress("unused") // Referenced in application.conf
@kotlin.jvm.JvmOverloads
fun Application.module(testing: Boolean = false) {
install(CallLogging) {
level = Level.INFO
filter { call -> call.request.path().startsWith("/") }
}
install(Authentication) {
}
install(ContentNegotiation) {
jackson {
enable(SerializationFeature.INDENT_OUTPUT)
}
}
routing {
get("/") {
call.respondText("HELLO WORLD!", contentType = ContentType.Text.Plain)
}
get("/json/jackson") {
call.respond(mapOf("hello" to "world"))
}
}
}
这是 Gradle 和 IntelliJ 的缓存问题,可能是由其他项目依赖项引起的。对于 IntelliJ,slf4j-api
库是空的。使用 rm -rf ~/.gradle/caches
和 re-download 依赖项删除全局 Gradle 缓存为我解决了这个问题。