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

Gradle项目执行gradle run报找不到主类错误求助

问题分析与解决方案

1. 模块识别错误

你的build.gradle放在子目录lib下,但根目录的settings.gradle没做修改,Gradle会默认把根目录当成主项目,完全没识别到lib这个子模块。执行gradle run时,它会在根项目下找主类,自然找不到。

修复步骤:

修改根目录的settings.gradle,添加子模块声明:

include ':lib'

执行gradle clean build重新构建,让Gradle正确加载子模块。

2. 主类未配置

就算模块识别正确,lib/build.gradle里没指定主类的话,run任务也不知道该执行哪个类。

修复步骤:

在lib/build.gradle里添加application插件并指定主类:

plugins {
    id 'java'
    id 'application' // 必须加这个插件才能用run任务
}

// Gradle 7.0以下用这个
mainClassName = 'com.signaturemd.sposZohoMergeScript.App'

// Gradle 7.0+用这个写法
// application {
//     mainClass.set('com.signaturemd.sposZohoMergeScript.App')
// }

3. 执行命令的路径/目标错误

因为build.gradle在lib子目录,你在根目录直接跑gradle run,默认是针对根项目的run任务,但根项目根本没配置主类。

正确执行方式:

  • 在根目录指定子模块的run任务:
    gradle :lib:run --args="--jsonConfig cliConfig.json"
    
  • 或者切换到lib目录再执行:
    cd lib
    gradle run --args="--jsonConfig cliConfig.json"
    

4. 源码结构适配检查

Eclipse生成的默认Gradle项目,可能没遵循标准Gradle目录结构,确认下lib目录下的源码路径是不是src/main/java/com/signaturemd/sposZohoMergeScript/App.java。如果不是,要么调整目录结构,要么在lib/build.gradle里指定源码目录:

sourceSets {
    main {
        java {
            srcDirs = ['src'] // 比如你的源码直接放在src目录下时用这个
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 20:06:27