如何使用命令行编译器kotlinc引入kotlinx包?
用kotlinc编译器使用kotlinx包(以协程为例)的方法
不需要必须使用Gradle这类构建工具,直接用kotlinc编译器也能使用kotlinx包,核心是要让编译器找到对应的依赖库,具体步骤如下:
1. 获取kotlinx协程的依赖jar包
你需要下载对应版本的kotlinx协程核心库jar包,比如kotlinx-coroutines-core-<版本号>.jar,版本建议和你使用的Kotlin编译器版本匹配(比如kotlinc是1.8.x的话,协程用1.7.x系列比较稳妥)。
也可以不用手动下载,直接通过kotlinc的参数从Maven仓库自动拉取依赖,后面会提到这种方式。
2. 编译时指定依赖路径
编译代码时,需要用-cp(或-classpath)参数把协程jar包的路径加入到类路径中。
假设你的main.kt和协程jar包在同一目录,编译命令如下:
kotlinc -cp "kotlinx-coroutines-core-*.jar" main.kt
如果用自动拉取依赖的方式,直接指定Maven仓库和依赖坐标即可:
kotlinc -repository https://repo1.maven.org/maven2/ -dependency org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 main.kt
这条命令会自动下载对应版本的协程库到本地缓存,无需手动下载jar。
3. 运行程序时也要指定类路径
编译完成后,运行程序同样需要把协程jar加入类路径,否则会出现找不到类的错误:
- Windows系统:
kotlin -cp ".;kotlinx-coroutines-core-*.jar" MainKt
- Linux/macOS系统:
kotlin -cp ".:kotlinx-coroutines-core-*.jar" MainKt
MainKt是Kotlin默认生成的主类名(如果你的main函数在顶层的话)。
4. 可选:打包成可执行jar(包含依赖)
如果你想生成一个可以直接运行的jar包,不用每次运行都指定类路径,可以用-include-runtime参数把Kotlin运行时和依赖一起打包:
# 手动指定jar的情况 kotlinc -include-runtime -cp "kotlinx-coroutines-core-*.jar" main.kt -d main.jar # 自动拉取依赖的情况 kotlinc -include-runtime -repository https://repo1.maven.org/maven2/ -dependency org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3 main.kt -d main.jar
之后直接运行:
java -jar main.jar
示例代码
比如你的main.kt内容如下:
import kotlinx.coroutines.* fun main() = runBlocking { launch { delay(1000) println("Hello from coroutine!") } println("Hello from main!") }
按照上面的步骤编译运行,就能正常执行协程代码了。
内容的提问来源于stack exchange,提问作者axolotlKing0722
相关产品推荐
相关产品推荐

