You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中JavaExec报错:找不到或无法加载主类

搞定JavaExec找不到主类的问题

我来帮你解决这个打包前运行Java脚本的问题~你遇到的Could not find or load main class错误,核心原因是Gradle的JavaExec任务没配置正确的类路径——虽然你的BuildScript.class已经编译好了,但默认情况下JavaExec不会自动把你项目里的编译输出目录加到类路径里,自然找不到你的自定义类。

修复后的build.gradle配置

把你原来的任务配置改成下面这样就行:

task runBuildScript(type: JavaExec) {
    // 指定你的主类全限定名
    main = 'net.bgreco.myapp.build.BuildScript'
    // 关键:把当前模块的编译输出和依赖都加入类路径
    classpath = sourceSets.main.runtimeClasspath
}

tasks.whenTaskAdded { theTask ->
    if (theTask.name.contains('package')) {
        theTask.dependsOn 'runBuildScript'
    }
}

为啥这样就能解决?

sourceSets.main.runtimeClasspath是Gradle提供的一个便捷路径集合,它包含了:

  • 你app/src/main/java下代码编译后的class文件(默认在app/build/classes/java/main/目录)
  • 你的app模块依赖的所有第三方库的class文件
    这样JavaExec执行时就能准确定位到你的BuildScript类了。

额外排查小技巧

如果还是有问题,可以加个小代码打印类路径,方便排查:

task runBuildScript(type: JavaExec) {
    main = 'net.bgreco.myapp.build.BuildScript'
    classpath = sourceSets.main.runtimeClasspath
    
    // 打印类路径,确认是否包含你的class文件目录
    doFirst {
        println "当前类路径:${classpath.asPath}"
    }
}

运行任务时就能看到实际用的类路径,检查有没有包含app/build/classes/java/main/这个目录。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:51:03