用Kotlin代码编译Kotlin文件

第一件事,自然是下载Kotlin的编辑器——Kotlin-compiler,这个编辑器可以在GitHub上搜到,

https://github.com/JetBrains/kotlin/releases/tag/v1.2.41(我目前在用1.2.41版)

或者https://github.com/JetBrains/kotlin/releases/tag/v1.2.50(目前最新版)

然后非常重要的一件事:把Kotlin-compiler的bin目录加入到环境变量中,这个非常重要!!如果不加入,用kotlin.bat的完成路径会让-classpath失效,从而找不到依赖的jar和.class文件!!这个坑很深!!例如我的路径为:D:\1_Software\kotlin-compiler-1.2.41\kotlinc\bin

使用Kotlin代码,调用dos命令,使用kotlinc.bat编译kotlin的源代码.kt文件

val runtime = Runtime.getRuntime()
val process = runtime.exec("kotlin.bat -cp(-classpath) ${.class文件依赖路径(不是文件,而是文件夹路径,多个依赖中间用分号;隔开),如果是jar包,请将jar的完整路径填上包括*.jar} ${要编译的.kt源文件路完整路径(不是文件夹路径)} -d ${编译完成后.class文件的输出路径}")

执行的时候需要输出log信息,这个dos后台输出命令必须用缓存来实现,即用BufferedImportStream,不然直接输出,什么都输出不了。

printMessage(process.inputStream)
printMessage(process.errorStream)

fun printMessage(inputStream: InputStream?) {
val bufferedInputStream = BufferedInputStream(inputStream)
val byteArray = ByteArray(2048)
while (true) {
val read = bufferedInputStream.read(byteArray)
if (read == -1) break
val string = String(byteArray)
println(string)
}
bufferedInputStream.close()
}


其实可以看出来kotlinc除了有个坑以外,其他和javac几乎是一样用的,没有什么区别。 

你可能感兴趣的:(Android,Kotlin)