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

如何运行依赖JAR文件中类的Kotlin应用程序

Kotlin多JAR拆分运行问题解决方案

问题根源

  1. 使用-include-runtime编译main.jar时,JVM启动规则是:只要用-jar参数,-cp指定的类路径会被完全忽略,因此hello.jar中的HelloWorld类无法被加载。
  2. 类路径分隔符在Windows和Linux/macOS下不同:Windows用;,类Unix系统用:,之前的命令可能因分隔符错误导致类找不到。

正确编译与运行步骤

1. 编译hello.jar(保持原命令即可)

kotlinc hello.kt -d hello.jar

2. 编译与运行main.jar的两种可行方式

方式一:不包含Kotlin运行时,用kotlin命令自动处理依赖

编译main.jar时不嵌入运行时:

kotlinc main.kt -cp hello.jar -d main.jar

运行时直接用kotlin命令(自动引入Kotlin标准库):

# Windows系统
kotlin -cp "hello.jar;main.jar" MainKt
# Linux/macOS系统
kotlin -cp "hello.jar:main.jar" MainKt

方式二:包含运行时,不用-jar参数启动

编译命令保持不变:

kotlinc main.kt -cp hello.jar -include-runtime -d main.jar

运行时直接指定主类,同时将两个JAR加入类路径:

# Windows系统
java -cp "main.jar;hello.jar" MainKt
# Linux/macOS系统
java -cp "main.jar:hello.jar" MainKt

验证方法

可以用jar tf命令检查JAR内的类文件是否存在:

# 查看main.jar中的内容,确认存在MainKt.class
jar tf main.jar
# 查看hello.jar中的内容,确认存在HelloWorld.class
jar tf hello.jar

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 08:33:22