Kotlin Multiplatform 将 ktor 作为后端 jvm 模块

问题描述 投票:0回答:1

我正在开发我的多平台项目,并添加了基于 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 制作了后端模块来解决它无法获取共享模块更改的问题。

kotlin jvm backend ktor kmm
1个回答
0
投票

我在同样的场景中遇到了同样的问题。我是这样解决的:

  1. Intellij IDEA 中打开您的项目。右键单击项目窗口中的项目名称
  2. 选择
    Open Module Settings
  3. 检查
    backend
    模块是否在您的项目内部,而不是作为上面的单独模块。删除单独的模块(如果存在)(代码将保持不变)。
  4. 检查
    backend
    中是否有此文件夹结构:
    src - jvmMain - kotlin - Server.kt

我认为根本原因是我使用 Android Studio 添加了

backend
模块,并且项目结构以某种方式破坏了。

© www.soinside.com 2019 - 2024. All rights reserved.