考虑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
个文件,但是一旦我尝试运行它,我就收到了错误:
错误:无法找到或加载主类hello.MainKt
我试图使用下面的2选项运行它,但是对于bot来说也有同样的错误:
选项1:
kotlin -cp <filename>.jar hello.MainKt
选项2:
java -jar <filename>.jar
项目结构和错误如下图所示:
答案 0 :(得分:1)
使用Kotlin 1.2,常见模块不会生成二进制文件(如.class文件),只会生成元数据文件。即使您未在任何地方使用expect
关键字,也是如此。
所以你必须创建另一个包含类似内容的模块:
apply plugin: 'kotlin-platform-jvm'
对于您的公共模块,JVM模块还需要expectedBy
中的dependencies
条目。另外,您当然可能需要相应的JS模块。
最好让IntelliJ为您创建整个多平台项目,然后编辑Gradle文件以适应,但此页面列出了手动步骤:https://kotlinlang.org/docs/reference/multiplatform.html#setting-up-a-multiplatform-project