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

如何配置Gradle JavaExec任务使用Android模块运行时类路径

问题原因

你的JavaExec任务仅手动配置了模块编译后的本地类路径和固定版本的kotlin-stdlib,没有将dependencies块中声明的第三方依赖(包括kotlinpoet)纳入运行类路径,因此触发类找不到异常。

修正方案

将myTask任务的配置替换为以下代码即可:

task myTask(type: JavaExec) {
    // 获取debug构建变体的完整编译类路径,自动包含所有三方依赖和模块编译输出
    def debugVariant = android.libraryVariants.find { it.name == 'debug' }
    classpath += debugVariant.getCompileClasspath(null)
    // 主类路径保持不变
    main = 'com.foo.app.home.parser.MainKt'
    // 运行任务前自动完成debug构建,避免找不到自定义主类
    dependsOn debugVariant.assemble
}

// 修正原有依赖配置:你之前定义的任务名为myTask,不是configGeneratorTask
tasks.named('build') { dependsOn('myTask') }

可选说明

  • 如果需要基于release变体运行任务,只需把代码中的debug替换为release即可
  • 无需再手动配置固定版本的kotlin-stdlib路径,类路径会自动使用你dependencies中声明的对应版本kotlin标准库
  • 低版本Gradle如果不支持getCompileClasspathAPI,可以使用拆分写法:
task myTask(type: JavaExec) {
    def debugVariant = android.libraryVariants.find { it.name == 'debug' }
    classpath += debugVariant.javaCompileProvider.get().outputs
    classpath += files(debugVariant.kotlinCompileProvider.get().destinationDirectory)
    classpath += configurations.implementation
    main = 'com.foo.app.home.parser.MainKt'
    dependsOn debugVariant.assemble
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:45:07