用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几乎是一样用的,没有什么区别。 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
其基础编译器(他们将其改为kompiler——开创了一系列以K字打头的用语——甚至连 contributors这类词他们也用改成了kontributors)可以被独立出来并嵌入到 Maven、Ant 或 Gradle 工具链中。这使得在 IDE 中开发的代码能够利用已有的机制来构建,从而尽可能的减少了在新环境中使用所受的干预,哪怕与那些没有安装 Kotlin 插件的开发人员一起合作项目也没有问题。 The IntelliJ Kotlin 插件扩展了 Java 编译器使得 Kotlin 代码能够得以编写、编译和调试。除此之外,关于基本的 Java 集合,已经有编写好的帮助函数,可以更顺畅地衔接将在 Java 8 中出现的集合扩展。 有两篇文章对 Kotlin 与 Java 以及 Kotlin 与 Scala 分别进行了比较,对各自特性和异同进行了对比。即便 Scala 可能还是更为强大些,Kotlin 还是尝试着提供比 Java 更好的函数、模式匹配、空指针预防和泛型。该语言同时也支持特征(traits)和模式匹配。 Kotlin 插件在当前版本的 IntelliJ 和 Eclipse 中均已能使用。 [4] Kotlin,类似 Xtend 一样,旨在提供一种更好的 Java 而非重建整个新平台。这两种语言都向下编译为字节码(虽然 Xtend 是首先转换成相应的 Java 代码,再让 Java 编译器完成繁重的工作),而且两者都引入了函数和扩展函数(在某个有限范围内静态地增加一个新方法到某个已有类型的能力)。Xtend 是基于 Eclipse 的,而 Kotlin 是基于 IntelliJ 的,两者都提供无界面构建。能够首先演变到其他 IDE 的语言有可能成为最后的赢家。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值