You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么Kotlin执行类需要生成jar文件,而Java不需要?

核心差异原因可以分为两点:

1. 运行时依赖的内置规则不同

  • Java的标准库属于JRE的默认内置组件,所有符合规范的Java运行环境都会默认加载java.*、javax.*等核心包,因此javac编译生成的独立.class文件,只要没有第三方依赖,直接用java命令就能正常加载运行,不需要额外打包依赖。
  • Kotlin的标准库不属于JRE的默认内置内容,必须额外指定才能被加载。如果直接编译生成散列的.class文件,用纯java命令运行时需要手动将kotlin-stdlib.jar加入classpath,否则会抛出类不存在的异常。官方引导用户打包成带-include-runtime的jar包,本质是把Kotlin标准库一起打进jar内,不需要用户手动配置classpath,降低运行门槛。

2. 所用编译命令参数主动指定了jar输出

Kotlin并不是必须生成jar才能运行,你给出的kotlinc命令都加了-d hello.jar参数,才会把编译结果输出为jar包。你完全可以直接用以下命令编译运行单文件Kotlin代码,不需要生成jar:

# 编译hello.kt,默认输出对应.class文件
kotlinc hello.kt
# 用kotlin命令运行,kotlin命令会自动把Kotlin标准库加入classpath
kotlin HelloKt

如果坚持要用纯java命令运行Kotlin编译出的.class,只需要手动指定Kotlin标准库的路径即可:

java -cp /path/to/kotlin-stdlib.jar:. HelloKt

内容的提问来源于stack exchange,提问作者Anushka Darshana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 21:27:02