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

Gradle多项目运行失败:执行./gradlew run提示无主类

问题原因与解决办法

你的问题核心是application插件的作用范围配置错误,导致主类信息没有正确绑定到test子项目:

错误分析

你把application插件和mainClass配置放在了根项目的build.gradle.kts里,要么是根项目本身被应用了application插件(但根项目没有主类),要么是配置没有正确传递到test子项目,导致执行./gradlew run时,test子项目的run任务找不到主类定义。

正确配置步骤

1. 调整根项目的build.gradle.kts

根项目只负责统一管理子项目的公共配置,不要直接引入application插件:

// 根项目 build.gradle.kts
plugins {
    java // 仅引入java插件用于公共配置
}

subprojects {
    apply(plugin = "java")

    repositories {
        mavenCentral()
    }

    // 公共依赖配置(比如测试依赖)
    dependencies {
        testImplementation(platform("org.junit:junit-bom:5.9.1"))
        testImplementation("org.junit.jupiter:junit-jupiter")
    }

    tasks.test {
        useJUnitPlatform()
    }
}

2. 在test子项目中单独配置application插件

在test子项目的build.gradle.kts里,单独引入application插件并指定主类:

// test子项目 build.gradle.kts
plugins {
    application
}

application {
    mainClass.set("org.example.Main")
}

3. 运行项目

  • 直接指定运行test子项目的任务:./gradlew :test:run
  • 如果想让根目录的./gradlew run默认执行test子项目的run任务,可以在根项目的build.gradle.kts末尾添加:
tasks.run {
    dependsOn(":test:run")
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 13:42:14