建立一个多平台项目

考虑Kotlin 1.2引入了kotlin-platform-common我试图建立我的第一个普通的.class文件,所以我做了如下:

main.kt

 package hello fun main() { println("kotlin!") } 

gradle.build

 group 'h' version 'prn' buildscript { ext.kotlin_version = '1.2.0' repositories { mavenCentral() } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } apply plugin: 'kotlin-platform-common' repositories { mavenCentral() } dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-common:$kotlin_version" } sourceSets { main.kotlin.srcDirs += 'src/kotlin' main.resources.srcDirs += 'src/resources' } jar { manifest { attributes 'Main-Class': 'hello.MainKt' } from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } } 

然后我运行gradle build

Q1 – 我发现没有find任何.class文件生成? 如何让它产生,我应该在哪里find它?

Q2-我生成了一个.jar文件,但是一旦我尝试运行它,我得到一个错误:

错误:无法find或加载主类hello.MainKt

我试图运行它使用下面的2选项,但得到了相同的错误为机器人:

选项1:

 kotlin -cp .jar hello.MainKt 

选项2:

 java -jar .jar 

项目结构和错误如下图所示:

在这里输入图像说明

使用Kotlin 1.2,通用模块不会生成二进制文件(如.class文件),而只能生成元数据文件。 即使您不在任何地方使用expect关键字,情况也是如此。

所以你必须创建另一个包含如下内容的模块:

 apply plugin: 'kotlin-platform-jvm' 

JVM模块还需要dependencies项中的expectedBy条目用于公共模块。 另外,你可能会需要一个相应的JS模块。

最好让IntelliJ为你创建整个多平台项目,然后编辑适合的Gradle文件,但是这个页面列出了手动步骤: https : //kotlinlang.org/docs/reference/multiplatform.html#setting-up-一,多平台项目