【问题标题】:Kotlin multiplatform JVM type mismatch in IntelliJIntelliJ 中的 Kotlin 多平台 JVM 类型不匹配
【发布时间】:2018-06-12 12:00:53
【问题描述】:

我有一个包含以下模块的项目:

  • 常见
  • common-js
  • common-jvm
  • 后端
  • 网络

我的想法是我将我的共享 (kotlin) 代码(主要是模型)放在共同的位置,这些代码可以在使用最近引入的多平台支持的 kotlin 驱动的后端和 javascript 驱动的 webapp 中使用。为此,我在 Intellij 中创建了一个新的多平台应用程序,并向其中添加了后端和 Web 模块。

公共模块中的示例类:

data class Show(
    val id: Long,
    val type: ShowType,
    val title: String,
    var description: String? = null
)

后端是一个简单的 Spring Boot 应用程序。它依赖于 common-jvm 项目:

compile project(":common-jvm")

现在,当我运行gradle bootRun 时,应用程序启动并运行良好。但是,当我尝试使用 IntelliJ 运行相同的应用程序时,我会收到如下错误:

错误:(68, 26) Kotlin:类型不匹配:推断类型为 kotlin.Long 但应为 java.lang.Long
错误:(68, 65) Kotlin:类型不匹配:推断类型为 kotlin.String! 但应为 java.lang.String

在这一行中,我尝试使用来自 json 源的数据创建 Show 模型的实例:

val movie = Show(json.get(id).asLong(), ShowType.MOVIE, json.get(movieTitle).asText())

我正在使用 Kotlin 1.2.10 和 spring boot 1.5.9.RELEASE。

有谁知道这是什么原因以及如何解决的?我尝试将-Xmulti-platform 放在后端模块的项目结构中的附加命令行参数中,但这也不起作用。

【问题讨论】:

    标签: kotlin kotlin-multiplatform


    【解决方案1】:

    您需要将构建/运行操作委托给 Gradle,因为目前不支持使用 IDEA 构建多平台项目。

    【讨论】:

    • 这确实是我最终决定的,它解决了它。谢谢!现在让我们希望尽快添加支持:)
    • maven 有什么类似的吗?
    • @Manish,Maven 目前不支持多平台项目,但如果您只是在寻找类似“将 IDE 构建/运行操作委托给 maven”之类的内容,可以在“构建”中找到最新版本 IDEA 中的 tools > Maven > Runner" 设置页面。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-08
    相关资源
    最近更新 更多