0

考虑到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

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

在此处输入图像描述

4

1 回答 1

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-多平台项目

于 2017-12-14T05:40:20.183 回答