Java报错Could not find or load main class,Gradle构建下求排查
问题分析与解决方法
你的核心问题是直接在源文件目录运行java命令,但没有先编译代码,且类路径(classpath)指向错误——Gradle编译后的class文件不会存放在源文件目录,你得先完成编译,再针对编译产物运行命令。
第一步:先通过Gradle编译项目
在项目根目录(project/)下执行以下命令,生成编译后的class文件:
gradle compileJava
编译完成后,class文件会被放在project/build/classes/java/main/目录下,这才是Java能识别的类文件根目录。
第二步:正确运行主类的两种方式
方式1:用Gradle直接运行(最简便)
在项目根目录执行:
gradle run
注意:需要在project/build.gradle中添加application插件并指定主类,否则Gradle不知道要运行哪个类。配置示例:
plugins { id 'application' } // 新版Gradle用这个 application { mainClass = 'org.example.Main' } // 旧版Gradle可改用 // mainClassName = 'org.example.Main'
方式2:手动用java命令运行
进入编译产物的根目录,再执行命令:
cd project/build/classes/java/main/ java org.example.Main
或者在任意目录,通过-cp参数指定类路径根:
java -cp project/build/classes/java/main org.example.Main
你之前的命令错误原因
- 直接在
src/main/java/下运行java org.example.Main:Java会在当前目录(src/main/java/)找org/example/Main.class,但这里只有.java源文件,没有编译后的.class文件,自然找不到。 - 尝试的
java -classpath org/example Main:类路径设为org/example,Java会在该路径下找Main.class,但你的主类带包名org.example,Java需要从类路径根开始找org/example/Main.class,所以这个路径完全错误。 java -classpath ../../../ org/example/Main:../../../回到了project/目录,但类路径根应该指向编译后的build/classes/java/main/,而非项目根目录,所以也找不到。
内容的提问来源于stack exchange,提问作者Jelly
相关产品推荐
相关产品推荐

