¿Error "Método principal no encontrado" al iniciar el programa? [duplicar]

Estoy aprendiendo Java para mi curso y me he topado con una pared de ladrillos. Me han encargado desarrollar un programa de línea de comando simple. Para hacer las cosas más fáciles, me dieron el siguiente código de muestra para modificar y no tener que empezar desde cero.

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);
    }
}

Estoy usando NetBeans y cuando trato de ejecutar el proyecto aparece este error:

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

Solo quiero que el programa se ejecute para poder entender mejor el código. Entiendo el error, pero no tengo idea de dónde implementar el método principal en este muro de texto. He estado experimentando durante horas, pero obviamente como novato soy completamente inútil. Cualquier ayuda sería muy apreciada.

preguntado el 22 de mayo de 12 a las 17:05

So donde es el método "principal"? (Además, intente buscar primero :-/) -

Realmente no sé qué pasaba con las ediciones... -

Busqué. Entendí lo que decía el error. Agregué un método principal, pero no tenía idea de cómo invocar el método run() a través de él sin obtener otros errores. Solo comencé a aprender hace unos días (literalmente), así que todo es nuevo para mí. De todos modos, problema resuelto con la ayuda de Tudor. -

7 Respuestas

Lo que tiene actualmente es solo un constructor llamado Main, lo que Java necesita es un método principal con firma exacta como:

public static void main(String[] args)
  • public - para que pueda ser llamado desde el exterior

  • static - para que no sea necesario crear una instancia de su clase

  • void - no va a devolver ningún valor

  • args - una matriz de parámetros de línea de comando que puede especificar mientras ejecuta el programa

Este es el punto de entrada para su aplicación.

Cuando se invoca su código actual, JVM intenta ubicar el método principal y, dado que no está presente en su código, genera la excepción que ha recibido.

Ya que mencionó principiante en su publicación, vale la pena mencionar que Java es un lenguaje sensible a mayúsculas y minúsculas - main y Main no son iguales en Java.

Ver también: El tutorial de introducción.

respondido 06 nov., 17:16

La firma correcta de main es:

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

Incluso está escrito en el mensaje de error que publicaste.

Eliminar el ; del constructor:

public Main() {
    run();
}

contestado el 22 de mayo de 12 a las 17:05

Recibo este error al agregar que: Excepción en el subproceso "principal" java.lang.RuntimeException: código fuente no compilable: falta el cuerpo del método o declarar resumen en la asignación.Principal. (Main.java:28) en la asignación.Main.main(Main.java:24) Resultado de Java: 1 - user1410613

@user1410613: edite la pregunta con el código que tiene ahora. - Tudor

@ user1410613: vea la edición de mi respuesta. - Tudor

Está funcionando ahora. Gracias amigo. - user1410613

@ user1410613: no olvide aceptar la respuesta si resolvió su problema. :) - Tudor

Tienes que usar el método main() en tu programa. A partir de aquí comienza la ejecución del programa.

como

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

Este método debe aparecer dentro de una clase, pero puede ser cualquier clase. En el lenguaje Java, cuando ejecuta una clase con el intérprete de Java, el sistema de tiempo de ejecución comienza llamando al método main() de la clase. El método main() luego llama a todos los demás métodos necesarios para ejecutar su aplicación.

El método main() acepta un solo parámetro: una matriz de cadenas. Este parámetro es el mecanismo a través del cual el sistema de tiempo de ejecución pasa los argumentos de la línea de comandos a su aplicación.

contestado el 22 de mayo de 12 a las 17:05

Está buscando un método con esta firma:

public static void main(String[] args)

Para ejecutar su código, el main El método puede verse así:

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

contestado el 22 de mayo de 12 a las 17:05

Como dice el mensaje de error bastante útil, necesita un método principal. Ver los tutoriales de Java.

contestado el 22 de mayo de 12 a las 17:05

main El método debe existir para que su aplicación se ejecute. Las aplicaciones Java lo necesitan para saber dónde comenzar a ejecutar el programa.

Coloque el método en una clase de su elección y luego haga clic derecho en el archivo y seleccione 'Ejecutar archivo'.

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

respondido 03 nov., 13:16

Necesita agregar un método principal en su clase principal para que JVM sabrá por dónde empezar y no una clase con un nombre "principal".

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

contestado el 22 de mayo de 12 a las 17:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.