2012-07-30 6 views
3

Im ayant des problèmes avec un simple programme Bonjour hello! Je espère que quelqu'un peut faire la lumière sur cela.Java ne peut pas trouver la méthode principale

Ainsi, l'erreur de réception im est la suivante:

$ javac Hello.java 
$ java Hello 
Exception in thread "main" java.lang.NoSuchMethodError: main 

donc par l'erreur, je peux voir que c'est évidemment manquant principale, mais il est là:

class Hello 
{ 
    public static void main(String argv) 
    { 
    System.out.println("hello world"); 
    } 
} 

Je suis sur Mac OS/X si c'est de l'aide.

+0

String [] argv et non Chaîne argv – Sid

Répondre

10

Le problème est que votre méthode ne prend pas String array comme argument. Utiliser la signature suivante à la place:

public static void main(String[] argv) 

ou

public static void main(String argv[]) 

Autre option valable est:

public static void main(String ... argv) 

En Java Language Specification ceci est dit comme suit:

La méthode main doit être déclaré public, static et void. Il doit spécifier un paramètre formel (§8.4.1) dont le type déclaré est un tableau de String.

+0

lol, wow .. qui est tout ce qu'il était. donc 'main' Doit avoir un args envoyé? – Menztrual

+0

12 minutes .. Jusque-là, avoir mon premier né – Menztrual

+0

Vous n'avez pas à lui donner d'arguments réels lors du démarrage de la JVM. Dans un tel cas, la méthode principale recevra un tableau vide. –

4

vous avez oublié [] dans String[] argv ou ... dans String... argv. Ce tableau est utilisé pour stocker les arguments utilisés dans la commande de création de JVM pour votre classe comme

java Hello argument0 argument1 argument2` 

et ainsi de suite.

4

méthode principale a la signature qui accepte String[] et vous avez écrit String ce qui est faux,

Make it

public static void main(String[] argv) 

ou varargs

public static void main(String... argv) 
4

Vous avez oublié de mettre la syntaxe de tableau, Vous pouvez même utiliser varargs selon JAVA 1.5

public static void main(String... argv) 
2
problème

est avec la signature main, qui devrait être

public static void main(String[] argv) 

ou pourrait être

public static void main(String ... argv) // known as varargs 

au lieu de public static void main(String argv) qui est dans votre cas

un coup d'oeil à this

pour varargs look

1

Votre principale signature de la méthode est mal String au lieu de String []

utilisation

public static void main(String[] argv) 

ou

public static void main(String... argv) 

lire here

2
public static void main(String[] args) 
public static void main(String... args) 
public static void main(String args[]) 

programmes Java commencent à exécuter à la méthode principale, qui a le prototype de la méthode ci-dessus

Questions connexes