{"id":"9318a06ae62b3e1a","repo":"spring-projects/spring-boot","slug":"unable-to-find-a-suitable-main-class-please-add-a","errorCode":null,"errorMessage":"Unable to find a suitable main class, please add a 'mainClass' property","messagePattern":"Unable to find a suitable main class, please add a 'mainClass' property","errorType":"validation","errorClass":"MojoExecutionException","httpStatus":null,"severity":"error","filePath":"build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/SpringBootApplicationClassFinder.java","lineNumber":50,"sourceCode":" */\nabstract class SpringBootApplicationClassFinder {\n\n\tprivate static final String SPRING_BOOT_APPLICATION_CLASS_NAME = \"org.springframework.boot.autoconfigure.SpringBootApplication\";\n\n\tstatic String findSingleClass(File classesDirectory) throws MojoExecutionException {\n\t\treturn findSingleClass(List.of(classesDirectory));\n\t}\n\n\tstatic String findSingleClass(List<File> classesDirectories) throws MojoExecutionException {\n\t\ttry {\n\t\t\tfor (File classesDirectory : classesDirectories) {\n\t\t\t\tString mainClass = MainClassFinder.findSingleMainClass(classesDirectory,\n\t\t\t\t\t\tSPRING_BOOT_APPLICATION_CLASS_NAME);\n\t\t\t\tif (mainClass != null) {\n\t\t\t\t\treturn mainClass;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthrow new MojoExecutionException(\"Unable to find a suitable main class, please add a 'mainClass' property\");\n\t\t}\n\t\tcatch (IOException ex) {\n\t\t\tthrow new MojoExecutionException(ex.getMessage(), ex);\n\t\t}\n\t}\n\n}\n","sourceCodeStart":32,"sourceCodeEnd":58,"githubUrl":"https://github.com/spring-projects/spring-boot/blob/5b2dbdbb8be64415eb6552f81ff7c449c8d251e6/build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/SpringBootApplicationClassFinder.java#L32-L58","documentation":"Error \"Unable to find a suitable main class, please add a 'mainClass' property\" thrown in spring-projects/spring-boot.","triggerScenarios":"Thrown at build-plugin/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/SpringBootApplicationClassFinder.java:50 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"analyzedSha":"5b2dbdbb8be64415eb6552f81ff7c449c8d251e6","analyzedAt":"2026-08-04T18:53:14.967Z","schemaVersion":2}