首页 > 解决方案 > 映射到 ktor 后调用正文时找不到类“kotlin.collections.HashMap”

问题描述

以下是引发错误的代码:

 suspend fun mapDeviceToLocation(locationId: String): String {
    val postDataParams: HashMap<String, String> = HashMap()
    
    postDataParams["locationId"] = locationId
    postDataParams["imei"] = "354872110157611"


    return try {
        val result = httpClient.post<MappedLocation> {
            url(CLEANJACK_ENDPOINT + "cleanjack/rest/deviceconfig/configureDevice/")
            body = postDataParams
            contentType(ContentType.Application.Json)
        }
        result.locationName

    } catch (e: ClientRequestException) {
        println("error in mapDeviceToLocation: $e")
        return "error in mapDeviceToLocation"
    }
}

我用这段代码调用上面的函数:

@Throws(Exception::class)
fun mapToLocation(locationId: String): String = runBlocking{
    return@runBlocking api.mapDeviceToLocation(locationId)
}

将 postDataParams 映射到主体时,它会引发以下异常,导致 post 调用失败并返回 null:

java.lang.ClassNotFoundException: Didn't find class "kotlin.collections.HashMap" on path: DexPathList[[zip file "/data/app/com.example.cleanjack.androidApp-9uu_Mnil3o6ItlGGyIEfgA==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.cleanjack.androidApp-9uu_Mnil3o6ItlGGyIEfgA==/lib/arm64, /data/app/com.example.cleanjack.androidApp-9uu_Mnil3o6ItlGGyIEfgA==/base.apk!/lib/arm64-v8a, /system/lib64, /product/lib64]]

我对如何解决这个问题一无所知,因为在调试哈希图时,是用正确的数据正确创建的。只有当试图将它映射到body时,它突然找不到hashmap。我正在使用 kotlin 1.5.10 和 ktor 1.5.3

标签: kotlinktor

解决方案


推荐阅读