Java项目main方法报错求助:已定义main仍提示未找到
Java主方法找不到问题排查与解决
问题概述
Java项目运行时提示找不到main方法,已定义main方法但排查2小时、重启IDEA后仍无法解决。
错误提示
Error: Main method not found in class nPack.Try, please define the main method as:
public static void main(String[] args)
or a JavaFX application class must extend javafx.application.Application
用户代码
class SearchInfo { class Search{ public static void main(String[] args) throws IOException { System.out.println("please sign up: "); chooseUser(); } public static String chooseUser()throws IOException { Scanner sc= new Scanner(System.in); System.out.println("Choose your specialization: "); System.out.println("1) Sale manager: "); System.out.println("2) Client: "); do{ System.out.print("Your choose: "); String choose = sc.nextLine(); switch(choose){ case "sale manager": case "manager": case "worker": case "Manager": case "1": System.out.println("Welcome company employee: "); System.out.println("Write your login and password: "); /*workerInputLgPw();*/ break; case "Client": case "client": case "2": System.out.println("Welcome our client: "); System.out.println("Write your login and password: "); /*clientInputLgPw();*/ break; default: System.out.println("Кто ты воин?"); System.out.println("Logout [1] or retry[0]? "); int ex = sc.nextInt(); if (ex == 0){ chooseUser(); } else if(ex == 1){ System.exit(0); } } break; }while(true); return ""; } } }
问题根源及修复方案
根源1:非静态内部类无法独立执行main方法
你的Search类是SearchInfo的非静态内部类,非静态内部类必须依附外部类实例才能存在,JVM无法直接加载非静态内部类来执行main方法,哪怕main是静态的也不行。
根源2:运行入口类不匹配
错误提示里的目标类是nPack.Try,但你的main方法定义在SearchInfo.Search类中,说明IDEA的运行配置选错了入口类。
修复步骤
- 将内部类改为静态类
修改Search类的定义,添加static关键字,使其成为静态内部类,这样JVM可以独立加载它:class SearchInfo { static class Search{ // 添加static修饰符 public static void main(String[] args) throws IOException { // 原有代码保持不变 } // 原有方法保持不变 } } - 修正运行配置
在IDEA中打开运行/调试配置,确保启动类选择的是SearchInfo.Search(如果类在nPack包下,完整类名是nPack.SearchInfo.Search),而非nPack.Try。 - 可选:提升类访问权限
如果需要在包外运行该类,建议将SearchInfo和Search的访问修饰符改为public,避免访问权限限制问题。
内容的提问来源于stack exchange,提问作者Nurel Ibrakhimov
相关产品推荐
相关产品推荐

