You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

手动执行gradlew compileDebugKotlin时遇java.lang.ClassNotFoundException

解决手动运行gradlew compileDebugKotlin时的ClassNotFoundException问题

我之前也碰到过一模一样的问题!Android Studio里构建顺风顺水,一到命令行跑gradlew compileDebugKotlin就炸这个错,其实根源很明确——命令行环境使用的是JRE(Java Runtime Environment)而不是JDK(Java Development Kit)com.sun.tools.javac.util.Context是JDK专属的类,JRE里没有包含对应的tools.jar,所以才会抛出找不到类的异常。而Android Studio默认会使用它自己配置的JDK,所以IDE内构建完全正常。

下面是我亲测有效的解决步骤:

1. 检查并修正JAVA_HOME环境变量

首先得确认你的系统全局环境变量JAVA_HOME指向的是JDK目录,而不是JRE:

  • Windows系统:打开命令提示符,输入:
    echo %JAVA_HOME%
    
  • Linux/macOS系统:打开终端,输入:
    echo $JAVA_HOME
    

输出应该是类似C:\Program Files\Java\jdk1.8.0_301或者/Library/Java/JavaVirtualMachines/jdk11.jdk/Contents/Home这样的JDK路径,绝对不能是带jre的路径。如果不对,修改环境变量指向正确的JDK,然后重启命令行窗口让配置生效。

2. 给项目单独指定Gradle使用的JDK

如果你不想修改全局环境变量,或者全局配置没问题但还是报错,可以在项目根目录的gradle.properties文件里添加一行配置,强制Gradle使用指定的JDK:

org.gradle.java.home=/path/to/your/jdk

/path/to/your/jdk替换成你实际的JDK路径,比如Windows上要写成C:\\Program Files\\Java\\jdk11(注意反斜杠要转义)。

3. 同步Android Studio的JDK配置

有时候命令行的Gradle没同步IDE的配置,也会出问题:

  • 打开Android Studio,进入File > Project Structure > SDK Location,查看JDK location的路径,确保这是一个完整的JDK(不是JRE)。
  • 然后在命令行里先跑gradlew clean清理缓存,再重新执行gradlew compileDebugKotlin试试。

4. 验证JDK版本兼容性

还要注意JDK版本和项目依赖的兼容性:比如如果你的项目用了Kotlin 1.8+或者Gradle 7+,建议使用JDK 11及以上版本,旧版JDK可能会出现类加载不兼容的问题。

如果以上方法都没用,可以试试删除项目根目录下的.gradle文件夹,让Gradle完全重新初始化构建环境,再重新运行命令。

内容的提问来源于stack exchange,提问作者ardevd

火山引擎 最新活动