Gradle构建Java项目报错:无法找到主类com.cestmoi.gradle_tut
Gradle Java项目主类找不到问题排查
环境与问题描述
使用Gradle 8.5 + Java 17.0.7 LTS构建第一个Java项目,按教程执行到21分钟步骤时,运行jar包出现如下错误:
Error: Could not find or load main class com.cestmoi.gradle_tut Caused by: java.lang.ClassNotFoundException: com.cestmoi.gradle_tut
项目目录结构
C:\Users\tgmjack\Desktop\java\gradle_tut>tree /F Folder PATH listing Volume serial number is C037-C26A C:. │ .gitattributes │ .gitignore │ build.gradle │ gradlew │ gradlew.bat │ settings.gradle │ ├───.gradle │ │ file-system.probe │ │ │ ├───8.5 │ │ │ gc.properties │ │ │ │ │ ├───checksums │ │ │ checksums.lock │ │ │ │ │ ├───dependencies-accessors │ │ │ dependencies-accessors.lock │ │ │ gc.properties │ │ │ │ │ ├───executionHistory │ │ │ executionHistory.bin │ │ │ executionHistory.lock │ │ │ │ │ ├───fileChanges │ │ │ last-build.bin │ │ │ │ │ ├───fileHashes │ │ │ fileHashes.bin │ │ │ fileHashes.lock │ │ │ │ │ └───vcsMetadata │ ├───buildOutputCleanup │ │ buildOutputCleanup.lock │ │ cache.properties │ │ outputFiles.bin │ │ │ └───vcs-1 │ gc.properties │ ├───build │ ├───libs │ │ gradle_tut.jar │ │ │ └───tmp │ └───jar │ MANIFEST.MF │ └───gradle │ libs.versions.toml │ ├───src │ └───main │ └───java │ └───com │ └───cestmoi │ gradle_tut.java │ └───wrapper gradle-wrapper.jar gradle-wrapper.properties
源码文件(gradle_tut.java)
package com.cestmoi; public class gradle_tut { public static void main(String[] args){ System.out.println("oh my days"); } }
构建配置(build.gradle)
plugins{ id 'java' } jar{ manifest { attributes 'Main-Class': 'com.cestmoi.gradle_tut' } }
问题解答
错误原因
核心问题是源码目录不符合Gradle默认约定。Gradle的Java插件默认会从项目根目录下的src/main/java读取源码,但你的源码放在了gradle/src/main/java目录下,Gradle不会扫描这个路径编译代码,导致生成的jar包中没有com.cestmoi.gradle_tut.class文件,运行时自然找不到主类。修复方法
- 移动源码目录:将
gradle/src/main/java整个目录剪切到项目根目录,让src文件夹与build.gradle、settings.gradle同级。 - 重新构建:在项目根目录执行命令
gradlew.bat clean build(Windows)或./gradlew clean build(Linux/macOS),清理旧构建产物并重新编译打包。 - 运行jar包:执行
java -jar build/libs/gradle_tut.jar验证结果。
- 额外信息需求
目前提供的信息已经足够定位问题。如果修复后仍报错,可以补充以下内容:
- 执行
gradlew compileJava命令后的完整输出日志 - 解压
build/libs/gradle_tut.jar后,查看内部是否存在com/cestmoi/gradle_tut.class文件
内容的提问来源于stack exchange,提问作者learny_mc_learny
相关产品推荐
相关产品推荐

