Ubuntu 16.04执行kotlinc编译报错:no class roots are found in JDK路径
解决Ubuntu 16.04中Kotlin编译JDK类路径错误的方案
别急,我来帮你一步步搞定这个问题~
这个报错的核心原因是Kotlin编译器找不到JDK里的核心类文件,大概率是因为Java 9在Ubuntu 16.04上的适配性不太好——毕竟Ubuntu 16.04是比较老的LTS版本,对Java 9的支持并不完善,而且早期的Kotlin版本和Java 9的兼容性也可能有问题。下面是具体的解决步骤:
第一步:检查系统已安装的JDK版本
先看看你的系统里装了哪些Java版本,运行这条命令:
update-alternatives --list java
如果输出里有java-8-openjdk-amd64相关的路径,那我们直接切换到Java 8就好;如果没有,就先安装Java 8。
第二步:切换到Java 8(已安装的情况下)
运行下面的命令来设置默认的Java运行环境:
sudo update-alternatives --config java
命令执行后会列出所有可选的Java版本,输入对应Java 8的序号,回车确认即可。
同样,还要设置默认的Java编译器版本:
sudo update-alternatives --config javac
同样选择Java 8对应的序号。
第三步:安装Java 8(如果未安装)
如果系统里没有Java 8,先执行以下命令安装OpenJDK 8:
sudo apt-get update sudo apt-get install openjdk-8-jdk
安装完成后,再回到第二步切换默认版本。
第四步:验证JDK配置是否生效
运行以下两条命令,确认输出的版本都是Java 1.8.x:
java -version javac -version
第五步:重新编译Kotlin文件
现在再执行你的编译命令:
kotlinc Hello.kt -include-runtime -d Hello.jar
这时候应该就能正常生成Hello.jar文件了。
如果还是有问题,可以检查一下Kotlin的版本(运行kotlinc -version),确保是较新的版本——如果是通过apt安装的Kotlin,Ubuntu 16.04的源里版本可能偏老,你可以考虑通过SDKMAN来安装最新版的Kotlin,但一般来说切换到Java 8就足以解决这个问题了。
内容的提问来源于stack exchange,提问作者Fil
相关产品推荐
相关产品推荐

