如何用`java`命令和`kotlin-compiler.jar`来编译Kotlin源代码?

我现在限于使用java命令编译Kotlin源文件。

所以经过一番尝试之后,我在kotlinc/lib/文件夹中找到了一个kotlin-compiler.jar文件。

然后我试图kotlinc/lib/写一个Hello.kt文件:

 public fun main(args: Array<String>) { println("hello") } 

然后,我执行了命令java -jar kotlin-compiler.jar Hello.kt ,它工作并生成了一个类文件HelloKt.class

结果我执行了命令java -cp ".:kotlin-runtime.jar" HelloKt ,它也起作用了:

 [xxxxxxx@uss lib]$ java -cp ".:kotlin-runtime.jar" HelloKt hello 

但是,对于更复杂的源文件:

AimToTen.kt:

 class AimToTen() { fun need(marks: Array<Int>): Int { // multiply 10 first for (idx: Int in marks.indices) marks[idx] *= 10 val result: Int = 190 * marks.size - 2 * marks.sum(); return when { result < 0 -> 0 result % 10 != 0 -> result / 10 + 1 else -> result / 10; } } } 

我试图执行java -jar kotlin-compiler.jar AimToTen.kt ,但是有些函数错过了(?):

 [xxxxxxx@uss intro1]$ java -jar kotlin-compiler.jar AimToTen.kt AimToTen.kt:4:32: error: unresolved reference: indices for (idx: Int in marks.indices) marks[idx] *= 10 ^ AimToTen.kt:10:56: error: unresolved reference: sum val result: Int = 190 * marks.size - 2 * marks.sum(); ^ 

所以我又试了一次:

 [xxxxxxx@uss intro1]$ java -jar kotlin-compiler.jar Welcome to Kotlin version 1.0.3 (JRE 1.8.0_65-b17) Type :help for help, :quit for quit >>> println(123) error: unresolved reference: println println(123) ^ >>> var test: IntArray = intArrayOf(1, 2) >>> test [I@7d64e326 >>> 

而且,在其他文件夹中,即使将所有.jar文件复制到同一文件夹中,也不能编译Hello.kt


呃,我很感激,如果你能帮我解决这个问题! 我想用java命令编译这个文件,没有任何绝对路径。

PS使用kotlinc AimToTen.kt作品。

正如在文档中所述,编译Kotlin文件的行是

 $ kotlinc hello.kt -include-runtime -d hello.jar 

顺便说一句,如果你想在命令行学习/尝试Kotlin(你不应该!),你可以考虑http://try.kotlinlang.org/