IntelliJ中的Kotlin多平台JVM类型不匹配

时间:2018-01-02 19:33:13

标签: kotlin kotlin-multiplatform

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

  • 共同
  • 共JS
  • 共JVM
  • 后端
  • 网络

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

公共模块中的示例类:

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

后端是一个简单的弹簧启动应用程序。它依赖于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放在后端模块的项目结构中的附加命令行参数中,但这也不起作用。

1 个答案:

答案 0 :(得分:2)

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

Build > Build Tools > Gradle > Runner