如何用`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/