概述
最近遇到一次命令行执行 gradlew checkcode时报错的问题,某个组件的Kotlin编译出错了,抛出的异常为 compileReleaseKotlin fails with java.lang.ClassNotFoundException: com.sun.tools.javac.util.Context。
看到 classNotfundException 第一反应是 tools.jar 包丢了,于是去检查 jdk 发现正常。用 idea 自带的 gradlew 插件执行命令正常,网上博客给出的建议是将 openJDK 换成 OracleJDK,而我的idea 用的就是 OracleJDK,而且 tools.jar 包也在 JDK 中。起初,我以为是我安装了多个版本的 jdk 导致的,但是我删的只剩一个 jdk 后,问题仍然没有解决。
网上还有一些答案说是 idea 的 Kotlin 插件版本问题,更换插件版本后仍然没有解决该问题。
后来,我看到了这个帖子java.lang.ClassNotFoundException: 有jar包但是找不到类-CSDN社区
倒数第二条评论点醒了我,编译环境不代表运行环境。于是我怀疑 bash 中的 gradlew 并没有选择我配置的 OracleJDK。原来,MacOS 是自带 java 环境的,我在安装了 OracleJDK 后并没有设置环境变量,导致 gradlew 用的是 MacOS 自带的 java 环境,我猜 MacOS 自带的 java 环境应该是 OpenJDK。而 idea 中的 gradlew 用的是项目中的 OracleJDK,所以不报错。最终解决办法如下:
(1)如果没有 OracleJDK,安装 OracleJDK。如果安装了跳过即可。
(2)配置环境变量 ,参照Mac环境变量PATH的配置 - 简书 (jianshu.com)
最后
以上就是孝顺戒指为你收集整理的Kotlin 编译出错 java.lang.ClassNotFoundException: com.sun.tools.javac.util.context的全部内容,希望文章能够帮你解决Kotlin 编译出错 java.lang.ClassNotFoundException: com.sun.tools.javac.util.context所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复