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
相关产品推荐
相关产品推荐

