kotlin - 如何使用针对 linuxX64 的 ktor-client-core 修复“未解决的参考:HttpClient”
问题描述
我正在尝试在第一步中构建一个针对 linuxX64 的 Kotlin Multiplatform 命令行应用程序。因此,我想构建一个基于通用模块中使用的 Ktor 的客户端。
这是我相当简单的设置:
版本概述
- 克托尔 1.1.5
- Kotlin 多平台 1.3.31
- 摇篮 5.3.1
构建.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 调用 :-)
推荐阅读
- c# - C#如何使用正则表达式过滤包含带有特殊字符的字母数字的数据表行
- c# - Linq 按 where 语法选择分组
- sql - 可以用常规 SQL 替换此动态 SQL 以提高性能吗?
- java - 如何从 main 方法访问数组?
- reactjs - 玩笑测试因 expect(jest.fn()).toHaveBeenCalled() 而失败
- python - Python中散列字符串的模糊比较
- python - 如何在一个图中绘制两个单独 DataFrame 的列(代表每一列的子图)
- django - Django:ModelForm 不提交
- angular - 在处理 NgRx 时,为什么要使用 Typescript Getter 在模板上显示属性?
- vba - 我需要为一个变量搜索多个答案