2

我有一个项目,其中包含以下模块:

  • 常见的
  • common-js
  • 通用 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.Longjava.lang.Long预期
错误:(68, 65) Kotlin: 类型不匹配: 推断类型是kotlin.String!java.lang.String预期

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

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在后端模块的项目结构中添加额外的命令行参数,但这也不起作用。

4

1 回答 1

4

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

构建 > 构建工具 > Gradle > Runner

于 2018-01-05T01:11:21.447 回答