"Main method not found" error when starting program? [duplicate]
I'm learning Java for my course and I've hit a brick wall. I've been tasked with developing a simple command line program. To make things easier I was given the following sample code to modify so I wouldn't have to start from scratch.
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);
}
}
I'm using NetBeans and when I try to run the project I get this error:
Error: Main method not found in class assignment.Main, please define the main method as: public static void main(String[] args)
I just want to get the program running so I can understand the code better. I understand the error, but have no idea where to implement the main method in this wall of text. I've been experimenting for hours, but obviously as a newbie I'm completely useless. Any help would be greatly appreciated.
Solution 1:
What you have currently is just a constructor named Main, what Java needs is a main method with exact signature as:
public static void main(String[] args)
public
- so that it can be called from outsidestatic
- so that no need to create an instance of your classvoid
- not going to return any valueargs
- an array for command line parameters that you can specify while running the program
This is the entry point for your application.
When your current code is being invoked, JVM is trying to locate main method, and since its not present in your code, it's throwing the exception which you have received.
Since you have mentioned beginner in your post, its worth mentioning that Java is a case sensitive language - main
and Main
are not same in Java.
See also: The getting started tutorial.
Solution 2:
The correct signature of main
is:
public static void main(String[] args) {
new Main();
}
It's even written in the error message you posted.
Remove the ;
from the constructor:
public Main() {
run();
}