设置多平台项目
Setting Up a Multiplatform Project
考虑 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- 我找不到任何生成的 .class
文件?如何生成它,我应该在哪里找到它?
Q2- 我生成了一个 .jar
文件,但是当我尝试 运行 它时,我收到一个错误:
Error: Could not find or load main class hello.MainKt
我尝试 运行 它使用下面的 2 个选项,但是对于 bot 出现了同样的错误:
选项 1:
kotlin -cp <filename>.jar hello.MainKt
选项 2:
java -jar <filename>.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-a-multiplatform-project
考虑 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- 我找不到任何生成的 .class
文件?如何生成它,我应该在哪里找到它?
Q2- 我生成了一个 .jar
文件,但是当我尝试 运行 它时,我收到一个错误:
Error: Could not find or load main class hello.MainKt
我尝试 运行 它使用下面的 2 个选项,但是对于 bot 出现了同样的错误:
选项 1:
kotlin -cp <filename>.jar hello.MainKt
选项 2:
java -jar <filename>.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-a-multiplatform-project