“Main class not found”错误源于运行配置、编译输出、源码根标记、主方法签名或模块/SDK设置异常;需依次检查主类全限定名、class文件是否存在、src是否标记为Sources Root、main方法是否public static void且类为public、以及module-info与SDK版本是否匹配。

如果您在 IntelliJ IDEA 中运行 Java 项目时提示 “Main class not found” 或 “找不到主类”,则通常是由于运行配置中指定的主类路径错误、类未正确编译、或模块/源码根目录设置异常导致。以下是排查此问题的具体步骤:
一、检查运行配置中的 Main class 字段
IDEA 的运行配置可能手动输入了错误的全限定类名,或未自动识别含 public static void main(String[] args) 方法的类。
1、点击右上角运行配置下拉菜单,选择 Edit Configurations…。
2、在左侧选择对应 Application 配置项,在 Main class 输入框中确认是否填写了完整的类名(如 com.example.App),而非仅类名(App)或包名(com.example)。
3、若输入框为空或显示红色波浪线,点击右侧 Search by class name 图标,输入类名后从列表中选择正确类。
二、验证主类是否存在于编译输出目录
IDEA 运行时依赖于 out/production/xxx(旧版)或 build/classes/java/main/(Maven/Gradle 项目)下的 .class 文件;若该目录中无对应主类的字节码,则必然报错。
1、展开项目视图中的 Project 标签页,定位到目标主类所在包路径(如 src/main/java/com/example/App.java)。
2、在文件管理器中进入项目根目录,检查 out/production/xxx/(IntelliJ 默认输出)或 build/classes/java/main/(构建工具项目)是否存在对应路径(如 com/example/App.class)。
3、若缺失,执行 Build → Build Project,观察编译日志是否报错;若编译失败,主类不会生成。
三、确认源码根目录(Sources Root)是否正确标记
IDEA 必须识别哪些目录为源代码根路径,否则不会将其中的 .java 文件纳入编译流程,也不会生成对应 .class 文件。
1、在项目结构中右键点击 src/main/java(Maven/Gradle)或 src(传统项目)文件夹。
2、选择 Mark Directory as → Sources Root,确认该目录图标变为蓝色,并在 Project Structure → Modules 中显示为 Sources 类型。
3、若存在多个 src 目录但仅部分被标记,未标记目录中的主类将不参与编译。
四、检查主类是否满足 JVM 启动要求
JVM 要求主类必须声明 public 访问修饰符且包含签名完全匹配的静态 main 方法;任一条件不满足均会导致“找不到主类”或运行时报 NoSuchMethodError。
1、打开疑似主类,确认类声明为 public class App(非 default、protected 或 private)。
2、确认 main 方法签名严格为:public static void main(String[] args);不得缺少 public、static、void,参数类型不可为 String[] args、String... args 以外形式。
3、若使用 record 或 interface 声明主类,JVM 不支持启动,需改用普通 public class。
五、验证模块与项目 SDK 设置一致性
当项目启用模块系统(module-info.java)或跨 JDK 版本时,模块声明缺失、requires 不完整、或 SDK 版本与字节码版本不兼容,均可能导致主类加载失败。
1、检查项目根目录是否存在 module-info.java;若存在,确认其中包含 exports 主类所在包,并通过 requires java.base 等必要模块。
2、进入 File → Project Structure → Project,核对 Project SDK 和 Project language level 是否与主类编译目标一致(如 SDK 17 对应 language level 17)。
3、在 Modules 页面中,确认对应模块的 Dependencies 选项卡下已添加正确的 SDK,并无红色警告图标。

















