我只是想了解底层架构,我认为我错了。
学习教程here举个例子。
当我这样做时:
kotlinc-jvm hello.kt -include-runtime -d hello.jar
如果编译器已经将代码转换为 Java 字节码,为什么还需要将 Kotlin 运行时捆绑到 jar 中?
最佳答案
当您使用 Java 编写应用程序时,您需要依赖所有标准类库。 java.
类(例如 java.lang.*
、java.util.*
...)包含在每个 JRE 中,因此您不需要自己打包。
Kotlin 包含自己的标准类库(Kotlin 运行时),独立于 Java 类库。要分发可供任何人使用普通旧 JRE 运行的 jar 文件,您还需要捆绑 Kotlin 运行时。
如果您没有捆绑 Kotlin 运行时,那么您的用户在执行应用程序时必须确保 Kotlin 运行时位于类路径中。您链接的页面提供了这种情况的示例:
Compiling a library
If you’re developing a library to be used by other Kotlin applications, you can produce the .jar file without including the Kotlin runtime into it.
$ kotlinc-jvm hello.kt -d hello.jar
如果您的目标是其他 Kotlin 用户,那么可以合理地假设他们已经可以使用 Kotlin 运行时。但是,如果您尝试为最终用户部署应用程序,则需要包含 Kotlin 运行时,以便您的应用程序是独立的。
关于kotlin - 为什么 Kotlin 需要在编译后捆绑其运行时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30565036/