如何运行依赖JAR文件中类的Kotlin应用程序
Kotlin多JAR拆分运行问题解决方案
问题根源
- 使用
-include-runtime编译main.jar时,JVM启动规则是:只要用-jar参数,-cp指定的类路径会被完全忽略,因此hello.jar中的HelloWorld类无法被加载。 - 类路径分隔符在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
相关产品推荐
相关产品推荐

