建立一个多平台项目
考虑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-一,多平台项目