启动程序时出现"找不到主要方法"错误?

use*_*613 4 java

我正在为我的课程学习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);
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

我只想让程序运行,这样我就能更好地理解代码.我理解错误,但不知道在这个文本墙中实现main方法的位置.我一直在试验几个小时,但很明显,作为一个新手,我完全无用.任何帮助将不胜感激.

mpr*_*hat 7

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

public static void main(String[] args)
Run Code Online (Sandbox Code Playgroud)
  • public - 这样就可以从外面调用它

  • static - 这样就不需要创建类的实例了

  • void - 不会返回任何价值

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

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

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

既然您在帖子中提到了初学者,那么值得一提的是Java是一种区分大小写的语言 - main并且Main在Java中并不相同.

另请参阅:入门教程.


Tud*_*dor 6

正确的签名main是:

public static void main(String[] args) {
   new Main();
}
Run Code Online (Sandbox Code Playgroud)

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

;从构造函数中删除:

public Main() {
    run();
}
Run Code Online (Sandbox Code Playgroud)