【问题标题】:"Main method not found" error when starting program? [duplicate]启动程序时出现“找不到主方法”错误? [复制]
【发布时间】:2012-05-29 04:03:53
【问题描述】:

我正在为我的课程学习 Java,但我碰了壁。我的任务是开发一个简单的命令行程序。为了让事情变得更容易,我得到了以下示例代码来修改,这样我就不必从头开始了。

package assignment;

public class Main {
private final static String[] mainMenuOpts = {"Students","Lecturers","Admin","Exit"};
private final static String[] studentMenuOpts = {"Add Student","List all Students","Find a Student","Return to Main Menu"};
private Menu mainMenu = new Menu("MAIN MENU",mainMenuOpts);
private Menu studentMenu = new Menu("STUDENT MENU",studentMenuOpts);
private DataStore data = new DataStore();
private java.io.PrintStream out = System.out;
private ReadKb reader = new ReadKb();
/** Creates a new instance of Main */
public Main() {
    run();
}

private void run(){
    int ret = mainMenu.display();
    while(true){
        switch(ret){
            case 1: students();break;
            case 2: lecturers(); break;
            case 3: admin(); break;
            case 4: exit(); break;
        }
        ret = mainMenu.display();
    }
}
private void students(){
    int ret = studentMenu.display();
    while(ret != 4){
        switch(ret){
            case 1: addStudent();break;
            case 2: listStudents(); break;
            case 3: findStudent(); break;
        }
        ret = studentMenu.display();
    }
}
private void lecturers(){
    out.println("\nLecturers not yet implemented");
}
private void admin(){
    out.println("\nAdmin not yet implemented");
}
//Student methods
private void addStudent(){
    out.println("\n\tAdd New Student");
    //prompt for details
    //add student to the datastore
    //ask if they want to enter another student - 
    // if so call addStudent again
    //otherwise the method completes and the studentMenu will display again

}
private void listStudents(){
    out.println("\n\tStudent Listing");
    //list all students from the datastore
}
private void findStudent(){
    out.println("\n\tFind Student");
    out.print("Enter Search String: ");
    //reasd search text
    //use datastore method to get list of students that contain the search string
    //display matching students

}
// end Student methods
private void exit() {
    data.save();  //call the datastore method that will save to file
    out.println("\n\nGoodbye :)");
    System.exit(0);
    }
}

我正在使用 NetBeans,当我尝试运行该项目时出现此错误:

Error: Main method not found in class assignment.Main, please define the main method as: public static void main(String[] args)

我只想让程序运行,以便更好地理解代码。我理解这个错误,但不知道在这堵文字墙的哪里实现 main 方法。我已经尝试了几个小时,但显然作为一个新手我完全没用。任何帮助将不胜感激。

【问题讨论】:

  • 那么“主要”方法在哪里? (另外,先尝试搜索:-/)
  • 我真的不知道编辑是怎么回事...
  • 我搜索过。我明白错误在说什么。我添加了一个 main 方法,但不知道如何通过它调用 run() 方法而不会出现其他错误。我几天前才开始学习(字面意思)所以这对我来说都是新的。无论如何,在 Tudor 的帮助下问题解决了。

标签: java


【解决方案1】:

main的正确签名是:

public static void main(String[] args) {
   new Main();
}

它甚至写在您发布的错误消息中。

从构造函数中移除;

public Main() {
    run();
}

【讨论】:

  • 我得到这个错误补充说:线程“main”中的异常java.lang.RuntimeException:无法编译的源代码 - 缺少方法主体,或在assignment.Main.(Main.java中声明抽象) :28) at assignment.Main.main(Main.java:24) Java 结果:1
  • @user1410613:请使用您现在拥有的代码编辑问题。
  • @user1410613:查看我的答案的编辑。
  • 它正在工作。谢谢老兄。
  • @user1410613:如果它解决了您的问题,请不要忘记接受答案。 :)
【解决方案2】:

它正在寻找具有此签名的方法:

public static void main(String[] args)

要运行您的代码,main 方法可能如下所示:

public static void main(String[] args)
{
    new Main();
}

【讨论】:

    【解决方案3】:

    正如相当有用的错误消息所述,您需要一个 main 方法。 See the java tutorials.

    【讨论】:

      【解决方案4】:

      您需要在主类中添加一个 main 方法,以便JVM 知道从哪里开始,而不是一个具有“主”名称的类。

      public static void main(String[] args) {
         new Main();
      }
      

      【讨论】:

        【解决方案5】:

        你必须在你的程序中使用 main() 方法。 程序从这里开始执行。

        喜欢

        public static void main(String args[])
        {
          //This is the starting point of your program.
        }
        

        此方法必须出现在一个类中,但它可以是任何类。 在 Java 语言中,当您使用 Java 解释器执行一个类时,运行时系统首先调用该类的 main() 方法。 main() 方法然后调用运行应用程序所需的所有其他方法。

        main() 方法接受一个参数:一个字符串数组。此参数是运行时系统将命令行参数传递给您的应用程序的机制

        【讨论】:

          【解决方案6】:

          你目前只有一个名为 Main 的构造函数,Java 需要的是一个具有精确签名的 main 方法:

          public static void main(String[] args)
          
          • public - 以便可以从外部调用它

          • static - 这样就无需创建类的实例

          • void - 不会返回任何值

          • args - 运行程序时可以指定的命令行参数数组

          这是您的应用程序的入口点。

          当您当前的代码被调用时,JVM 正在尝试定位 main 方法,并且由于它不存在于您的代码中,因此它会抛出您收到的异常。

          由于您在帖子中提到了初学者,因此值得一提的是,Java 是一种区分大小写的语言 - mainMain 在 Java 中是不同的。

          另请参阅:The getting started tutorial

          【讨论】:

            【解决方案7】:

            main 方法应该存在以便您的应用程序运行。 Java 应用程序需要它知道从哪里开始执行程序。

            将方法放入您选择的类中,然后右键单击文件并选择“运行文件”。

             public static void main(String[] args)
             {
                 // your code here
             }
            

            【讨论】:

              猜你喜欢
              • 2020-01-03
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-05-06
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多