Kotlin代码在IntelliJ正常运行,命令行编译报unresolved reference错误
解决命令行编译Kotlin代码时Gson依赖未找到的问题
问题原因
IntelliJ IDEA会自动管理项目的依赖类路径,把Gson的jar包纳入编译和运行环境,但原生kotlinc编译器默认只识别JDK和Kotlin标准库,无法自动找到第三方依赖,所以会报unresolved reference: google这类错误。
解决方案
1. 临时编译运行(仅编译时指定依赖)
找到你项目中使用的Gson jar文件(可以从IntelliJ的External Libraries里右键复制路径,或者从Maven中央仓库下载对应版本),修改编译命令,通过-cp(即-classpath的缩写)参数引入Gson依赖:
kotlinc *.kt -cp /path/to/your/gson-x.x.x.jar -include-runtime -d GizmosK.jar
编译完成后,运行jar包时需确保Gson jar在类路径中;如果需要可直接分发的独立jar,参考下面的方法。
2. 生成包含所有依赖的可分发jar包
如果要生成能直接分发、无需额外依赖的jar,需要把Gson的类合并到最终jar里:
- 第一步:编译代码到class文件目录
kotlinc *.kt -cp /path/to/your/gson-x.x.x.jar -d classes - 第二步:解压Gson jar到class文件目录
unzip /path/to/your/gson-x.x.x.jar -d classes - 第三步:创建
manifest.txt文件,指定主类(替换成你的主类全限定名,比如com.yourpackage.MainKt):Main-Class: com.yourpackage.MainKt - 第四步:打包成可运行jar
jar cvfm GizmosK.jar manifest.txt -C classes .
这样生成的GizmosK.jar就包含了Kotlin运行时、Gson依赖和你的代码,直接用java -jar GizmosK.jar就能运行。
内容的提问来源于stack exchange,提问作者gotube
相关产品推荐
相关产品推荐

