我只是想了解底层架构,我认为我错了。
学习教程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 运行时,以便您的应用程序是独立的。
https://stackoverflow.com/questions/30565036/
相关文章:
jpa - kotlin 数据类 + bean 验证 jsr 303
android - ListAdapter 未更新 RecyclerView 中的项目
function - 为什么不能使用 'kotlin.Result' 作为返回类型?
java - Kotlin 中的错误但仅使用 Java - 类 kotlin.reflect.jvm
java - Kotlin 属性的私有(private) getter 和 public sette
android - 警告 : warning: Supported source version '