首页 > 解决方案 > Kotlin Multiplatform 将 ktor 作为后端 jvm 模块

问题描述

我正在开发我的多平台项目,并添加了基于 ktor 的后端模块作为其中的一部分,因为我想与这个后端模块共享我的通用代码,我已将其添加到依赖项中

implementation(project(":shared"))

但是似乎存在与 jvm 目标共享代码的问题(ktor 后端是)我找到了一种解决方法,通过将此后端子模块标记为多平台本身来解决我的项目的这种依赖关系,但现在当我构建它和开始运行我收到此错误

错误:无法找到或加载主类 com.owlsoft.backend.ServerKt

我的整个后端 ktor build.gradle.kts

plugins {
    application
    kotlin("multiplatform")
    id("kotlinx-serialization")
}


kotlin {
    jvm {
        withJava()
    }
}

application {
    @Suppress("DEPRECATION")
    mainClassName.set("com.owlsoft.backend.ServerKt")
}


dependencies {
    implementation(Libs.Coroutines.core)

    implementation(Libs.KtorServer.core)
    implementation(Libs.KtorServer.netty)
    implementation(Libs.KtorServer.serialization)
    implementation(Libs.KtorServer.websockets)

    implementation(Libs.kotlinSerialization) // JVM dependency

    implementation("ch.qos.logback:logback-classic:1.2.3")
    implementation(project(":shared"))
    testImplementation(Libs.KtorServer.test)
}

tasks.register("stage") {
    dependsOn("installDist")
}

我主要是尝试共享一些模型和业务逻辑,我只在多平台中使用 ktor 制作了后端模块,以解决它无法获取共享模块更改的问题。

所以我有这样的模块

标签: kotlinjvmbackendktorkmm

解决方案


推荐阅读