IntelliJ 在新的 Ktor 项目中缺少对 slf4j 的引用
Posted
技术标签:
【中文标题】IntelliJ 在新的 Ktor 项目中缺少对 slf4j 的引用【英文标题】:IntelliJ missing reference to slf4j in new Ktor project 【发布时间】:2020-12-24 22:04:01 【问题描述】:我通过他们的 IntelliJ 插件启动了一个新的 Ktor 项目,一切都可以使用 Gradle 进行编译和运行。然而,在 IntelliJ 中,所有引用 slf4j 记录器的东西都出现Unresolved reference: ...
错误。
我的导入和设置日志级别是这样的(抱歉我的声誉不够高,无法发布图片):
项目是用以下依赖生成的
// 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"))
【问题讨论】:
【参考方案1】:这是 Gradle 和 IntelliJ 的缓存问题,可能是由其他项目依赖项引起的。对于 IntelliJ,slf4j-api
库是空的。使用 rm -rf ~/.gradle/caches
删除全局 Gradle 缓存并重新下载依赖项解决了我的问题。
【讨论】:
以上是关于IntelliJ 在新的 Ktor 项目中缺少对 slf4j 的引用的主要内容,如果未能解决你的问题,请参考以下文章
Ktor 应用程序未在使用 IntelliJ IDEA 的 Kotlin 多平台项目中运行
由于缺少 Ivy 模块,无法创建 IntelliJ Scala 项目
如何在 IntelliJ IDEA 中为 Ktor 设置运行配置?
在新的 Windows 10 机器上安装 Git 后缺少 .gitconfig 文件(此外,SourceTree 未启动 BeyondCompare)
基本身份验证应在邮递员中响应 500(授权),但 401 Unauthorized 可以正常工作。使用 ktor intellij mongodb