IntelliJ 中的 Kotlin 多平台 JVM 类型不匹配
Kotlin multiplatform JVM type mismatch in IntelliJ
我有一个包含以下模块的项目:
- 普通
- 普通 js
- common-jvm
- 后端
- 网络
我的想法是将我的共享 (kotlin) 代码(主要是模型)放在一起,可以使用最近引入的多平台支持在 kotlin 驱动的后端和 javascript 驱动的 webapp 中使用。为此,我在 Intellij 中创建了一个新的多平台应用程序,并向其中添加了后端和 Web 模块。
通用模块中的示例class:
data class Show(
val id: Long,
val type: ShowType,
val title: String,
var description: String? = null
)
后端是一个简单的 spring 启动应用程序。它依赖于 common-jvm 项目:
compile project(":common-jvm")
现在当我 运行 gradle bootRun
时,应用程序启动并运行良好。但是,当我尝试使用 IntelliJ 运行 相同的应用程序时,出现如下错误:
Error:(68, 26) Kotlin: Type mismatch: inferred type is kotlin.Long
but java.lang.Long
was expected
Error:(68, 65) Kotlin: Type mismatch: inferred type is kotlin.String!
but java.lang.String
was expected
在这一行中,我尝试使用来自 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
放入后端模块的项目结构中的附加命令行参数中,但这也不起作用。
您需要将 build/run 操作委托给 Gradle,因为目前不支持使用 IDEA 构建多平台项目。
我有一个包含以下模块的项目:
- 普通
- 普通 js
- common-jvm
- 后端
- 网络
我的想法是将我的共享 (kotlin) 代码(主要是模型)放在一起,可以使用最近引入的多平台支持在 kotlin 驱动的后端和 javascript 驱动的 webapp 中使用。为此,我在 Intellij 中创建了一个新的多平台应用程序,并向其中添加了后端和 Web 模块。
通用模块中的示例class:
data class Show(
val id: Long,
val type: ShowType,
val title: String,
var description: String? = null
)
后端是一个简单的 spring 启动应用程序。它依赖于 common-jvm 项目:
compile project(":common-jvm")
现在当我 运行 gradle bootRun
时,应用程序启动并运行良好。但是,当我尝试使用 IntelliJ 运行 相同的应用程序时,出现如下错误:
Error:(68, 26) Kotlin: Type mismatch: inferred type is
kotlin.Long
butjava.lang.Long
was expected
Error:(68, 65) Kotlin: Type mismatch: inferred type iskotlin.String!
butjava.lang.String
was expected
在这一行中,我尝试使用来自 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
放入后端模块的项目结构中的附加命令行参数中,但这也不起作用。
您需要将 build/run 操作委托给 Gradle,因为目前不支持使用 IDEA 构建多平台项目。