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

时间:2012-05-22 16:08:56

标签: 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);
    }
}

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

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

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

7 个答案:

答案 0 :(得分:7)

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

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

  • static - 因此无需创建班级实例

  • void - 不会返回任何值

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

这是您申请的入口点。

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

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

另请参阅:The getting started tutorial

答案 1 :(得分:6)

main的正确签名是:

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

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

从构造函数中删除;

public Main() {
    run();
}

答案 2 :(得分:4)

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

喜欢

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

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

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

答案 3 :(得分:2)

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

public static void main(String[] args)

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

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

答案 4 :(得分:2)

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

答案 5 :(得分:2)

您的应用程序应该存在

main方法。 Java应用程序需要它知道从哪里开始执行程序。

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

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

答案 6 :(得分:1)

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

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