为什么Kotlin编译后需要捆绑其运行时?

金田

我只是想了解基础架构,我认为我错了。

以教程这里作为例子。

当我做:

kotlinc-jvm hello.kt -include-runtime -d hello.jar

如果编译器已将代码转换为Java字节码,为什么需要将Kotlin运行时捆绑到jar中?

格雷格·科普夫(Greg Kopff)

用Java编写应用程序时,您将依赖于所有标准类库。java.级别(如java.lang.*java.util.*...)都包含在每一个JRE,这样你就不需要自己包装它们。

Kotlin包括自己的标准类库(Kotlin运行时),与Java类库分开。要分发一个jar文件,任何拥有普通JRE的人都可以运行该jar文件,您还需要捆绑Kotlin运行时。

如果您没有捆绑Kotlin运行时,那么您的用户将必须在执行应用程序时确保Kotlin运行时在类路径中。您链接的页面提供了这种情况的示例:

编译库

如果您正在开发供其他Kotlin应用程序使用的库,则可以生成.jar文件而无需将Kotlin运行时包含在其中。

$ kotlinc-jvm hello.kt -d hello.jar

如果您以其他Kotlin用户为目标,那么可以合理地假设他们已经可以使用Kotlin运行时。但是,如果您要为最终用户部署应用程序,则要包括Kotlin运行时,以便您的应用程序是独立的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么需要启用razor运行时编译?我在服用疯药吗?

来自分类Dev

为什么在编写编译器时需要运行时库?

来自分类Dev

为什么编译和运行时依赖很重要?

来自分类Dev

为什么Java在运行时需要classpath

来自分类常见问题

为什么Kotlin集合的运行时类是Java类?

来自分类Dev

为什么json4s需要Scala编译器作为运行时依赖项

来自分类Dev

为什么此Typescript接口在运行时捆绑中导致空异常?

来自分类Dev

为什么此Typescript接口在运行时捆绑中导致空异常?

来自分类Dev

为什么此代码编译并在执行时给出运行时错误

来自分类Dev

OpenMP运行时需要什么?

来自分类Dev

为什么在运行时重新定义的此方法不保留其值?

来自分类Dev

为什么在运行时重新定义的此方法不保留其值?

来自分类Dev

为什么ClassCastException是运行时错误?

来自分类Dev

为什么要引入运行时?

来自分类Dev

为什么此代码使用UndecidableInstances进行编译,然后生成运行时无限循环?

来自分类Dev

为什么Swift中的反向范围会在运行时而不是编译时崩溃

来自分类Dev

为什么格式错误的XAML似乎会编译,然后在运行时失败?

来自分类Dev

为什么dart不会抛出编译时错误类型异常。运行时间?

来自分类Dev

为什么在运行时出现Typescript编译错误?

来自分类Dev

为什么以下条件运算符“?:”会编译却给出运行时错误

来自分类Dev

为什么在此代码中没有除以零的编译时警告或运行时崩溃?

来自分类Dev

为什么BufferedReader类在编译时而不是在运行时产生异常

来自分类Dev

为什么编译器不能阻止这些运行时转换异常?

来自分类Dev

为什么某些Docker映像在运行时需要命令?

来自分类Dev

为什么“动态”需要特定于语言的运行时组件?

来自分类Dev

需要帮助以了解为什么在运行时不考虑重载的equals方法

来自分类Dev

为什么我们实际上需要运行时多态性?

来自分类Dev

需要帮助以了解为什么在运行时不考虑重载的equals方法

来自分类Dev

为什么即使在获得输出后,IDEone仍显示运行时错误?

Related 相关文章

  1. 1

    为什么需要启用razor运行时编译?我在服用疯药吗?

  2. 2

    为什么在编写编译器时需要运行时库?

  3. 3

    为什么编译和运行时依赖很重要?

  4. 4

    为什么Java在运行时需要classpath

  5. 5

    为什么Kotlin集合的运行时类是Java类?

  6. 6

    为什么json4s需要Scala编译器作为运行时依赖项

  7. 7

    为什么此Typescript接口在运行时捆绑中导致空异常?

  8. 8

    为什么此Typescript接口在运行时捆绑中导致空异常?

  9. 9

    为什么此代码编译并在执行时给出运行时错误

  10. 10

    OpenMP运行时需要什么?

  11. 11

    为什么在运行时重新定义的此方法不保留其值?

  12. 12

    为什么在运行时重新定义的此方法不保留其值?

  13. 13

    为什么ClassCastException是运行时错误?

  14. 14

    为什么要引入运行时?

  15. 15

    为什么此代码使用UndecidableInstances进行编译,然后生成运行时无限循环?

  16. 16

    为什么Swift中的反向范围会在运行时而不是编译时崩溃

  17. 17

    为什么格式错误的XAML似乎会编译,然后在运行时失败?

  18. 18

    为什么dart不会抛出编译时错误类型异常。运行时间?

  19. 19

    为什么在运行时出现Typescript编译错误?

  20. 20

    为什么以下条件运算符“?:”会编译却给出运行时错误

  21. 21

    为什么在此代码中没有除以零的编译时警告或运行时崩溃?

  22. 22

    为什么BufferedReader类在编译时而不是在运行时产生异常

  23. 23

    为什么编译器不能阻止这些运行时转换异常?

  24. 24

    为什么某些Docker映像在运行时需要命令?

  25. 25

    为什么“动态”需要特定于语言的运行时组件?

  26. 26

    需要帮助以了解为什么在运行时不考虑重载的equals方法

  27. 27

    为什么我们实际上需要运行时多态性?

  28. 28

    需要帮助以了解为什么在运行时不考虑重载的equals方法

  29. 29

    为什么即使在获得输出后,IDEone仍显示运行时错误?

热门标签

归档