kotlin - 如何使用针对 linuxX64 的 ktor-client-core 修复 'Unresolved reference: HttpClient'

标签 kotlin ktor kotlin-multiplatform

我正在尝试在第一步中构建一个针对 linuxX64 的 Kotlin Multiplatform 命令行应用程序。因此,我想构建一个基于通用模块中使用的 Ktor 的客户端。

这是我相当简单的设置:

版本概览

  • Ktor 1.1.5
  • Kotlin 多平台 1.3.31
  • Gradle 5.3.1

  • build.gradle.kts
    plugins {
        kotlin("multiplatform") version "1.3.31"
    }
    
    repositories {
        mavenCentral()
        maven { url = uri("https://kotlin.bintray.com/ktor") }
    }
    
    kotlin {
        linuxX64("linux") {
            binaries {
                executable()
            }
        }
    
        sourceSets {
            val commonMain by getting {
                dependencies {
                    implementation(kotlin("stdlib-common"))
                    api("io.ktor:ktor-client-core:1.1.5")
                }
            }
    
            val linuxMain by getting {
                dependsOn(commonMain)
                dependencies {
                    api("io.ktor:ktor-client-curl:1.1.5")
                }
            }
        }
    }
    

    src/linuxMain/kotlin/Main.kt
    fun main(){
        val client = MyClient()
        client.execute()
    }
    

    src/commonMain/kotlin/MyClient.kt
    import io.ktor.client.*
    
    class MyClient {
    
        private val client = HttpClient()
    
        fun execute() {
            //do something with Ktor client
        }
    }
    

    当我构建项目时,我得到以下构建问题:
    11:15:21: Executing task 'build'...
    
    
    > Configure project :
    Kotlin Multiplatform Projects are an experimental feature.
    
    > Task :wrapper
    
    BUILD SUCCESSFUL in 0s
    1 actionable task: 1 executed
    
    > Configure project :
    Kotlin Multiplatform Projects are an experimental feature.
    
    > Task :compileKotlinLinux FAILED
    e: .../src/commonMain/kotlin/MyClient.kt: (1, 8): Unresolved reference: io
    e: .../src/commonMain/kotlin/MyClient.kt: (5, 26): Unresolved reference: HttpClient
    

    我是 Kotlin Native/Mutliplatform 和 Ktor 的新手。如果我的设置有误,请耐心等待...

    最佳答案

    添加 enableFeaturePreview("GRADLE_METADATA") settings.gradle.kts 修复了构建问题。
    我刚刚使用 ktor-client-curl 使用 linuxX64 二进制文件成功进行了 HTTP 调用 :-)

    关于kotlin - 如何使用针对 linuxX64 的 ktor-client-core 修复 'Unresolved reference: HttpClient',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56089071/

    相关文章:

    android - 如何将图标添加到内部存储文件夹,如Whatsapp或Snapchat(Android)

    android - 我可以直接在ios/android原生项目中使用/导入kotlin多平台库吗?

    ios - 卡住函数时 kotlin-native freeze() 方法崩溃

    kotlin - 在 Ktor 中,如何将 InputStream 流式传输到 HttpClient 请求的正文中?

    kotlin - 如何使用 Ktor 和 Kotlin 下载带有进度指示器的大文件?

    android - Kotlin/Native 将 android 日志导入 android 共享代码模块时遇到问题

    android - kotlin - alertDialog 的自定义字体

    kotlin - 带前缀星号是什么意思

    java - 如何将参数 "t"替换为 "className"?

    multithreading - Ktor、Netty 和增加每个端点的线程数