2010-08-22 5 views
4

Possible Duplicate:
Exception in thread “main” java.lang.NoSuchMethodError: mainException dans le thread "principal" java.lang.NoSuchMethodError: principale

je reçu le message ci-dessus. Le code est le suivant:

class Test 
{ 
public static void main(String ar[]) 
{ 
    printf("hai"); 
} 
} 

Comment ce problème est-il causé et comment puis-je le réparer?

+0

Je suis confus, comment l'avez-vous même compilé? Mon test: 'Sandbox.java:27: ne peut pas trouver le symbole symbole: méthode printf (java.lang.String)' – TheLQ

+1

@Lord: Ce qui confirme seulement mon soupçon qu'il n'exécute pas la classe qu'il pense qu'il exécute :) – BalusC

+0

http://stackoverflow.com/questions/5407250/causes-of-java-lang-nosuchmethoderror-main-exception-in-thread-main –

Répondre

4

En plus du problème qui cause l'exception actuelle (voir la réponse de BalusC), le bon « Bonjour tout le monde » en Java est:

class Test 
{ 
    public static void main(String[] args) { 
     System.out.println("hai"); 
    } 
} 

Voir: java.lang.System

+0

Cela aurait seulement provoqué une ** exception ** exception * quand * il a obtenu le 'main' à exécuter. – BalusC

+0

La convention normale est en passant de mettre des accolades sur la déclaration de type :) – BalusC

+1

De la base [tutoriel arrays] (http://download.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html): * Cependant , la convention décourage cette forme; les parenthèses identifient le type de tableau et devraient apparaître avec la désignation de type. * – BalusC

1

Je vois votre problème, la la signature n'est pas correcte. Il doit être public static void main (String [] args)

+2

Bonne observation, mais pas la cause. – trashgod

+2

Il est cependant ** syntaxiquement correct. – BalusC

+0

@trashgod: Je suis aussi nouveau en Java, et je ne sais pas s'il peut être écrit de cette façon. En C#, cela devrait être illégal. – LLS

6

La classe que vous essayez d'exécuter n'a pas de méthode main.

Depuis votre méthode main ressemble syntaxiquement bien, cela peut avoir deux causes:

  1. que vous exécutez la mauvaise classe.
  2. Le fichier de classe réel ne contient pas ce code.

La solution est évidente:

  1. Assurez-vous que votre commande pointe vers le fichier de classe correct, vous pourriez avoir plusieurs fichiers de classe avec le même nom et être assis dans le mauvais répertoire.
  2. Assurez-vous que vous avez compilé le bon fichier source dans le bon fichier de classe, vous avez peut-être modifié l'un et l'autre et oublié de recompiler.
+0

Je vois ce que vous vouliez dire dans d'autres commentaires, maintenant. – trashgod

1

Cela peut aussi être un problème de chemin de classe qui provoque la confusion d'Eclipse et ne parvient pas à trouver votre classe lorsqu'il essaie de l'exécuter. Je regarderais le chemin de construction de Java dans les propriétés du projet pour m'assurer qu'il n'y a pas d'erreurs.

Questions connexes