web-dev-qa-db-fra.com

Erreur: la sélection ne contient pas de type principal

J'essaie d'exécuter des fichiers Java dans un nouveau projet. Je crée donc le projet, y mets les fichiers et j'essaie d'exécuter le fichier principal pour que mon jeu démarre. 

Je reçois une erreur qui dit selection does not contain a main type.

J'ai essayé plusieurs façons de l'exécuter:

  • Certains disent de lancer à nouveau Eclipse, essayé une douzaine de fois. 
  • Quelque part, quelqu'un a demandé d'ouvrir un nouveau projet et de créer un chemin de génération vers l'ancien projet. 

N'a pas fonctionné non plus. 

Je suis à peu près sûr que ça doit marcher parce que je l’avais couru il ya quelques heures à l’école. Comment puis-je obtenir ce travail? Merci d'avance! 

37
user2321611

J'espère que vous essayez de diriger la classe principale de cette manière. Voir la capture d'écran: enter image description here

Si non, essayez de cette façon et si oui, assurez-vous que votre classe a la méthode principale 

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

même définition. J'espère que ceci vous aidera.

19
NoNaMe

Les autres réponses sont toutes valides, cependant, si vous rencontrez toujours un problème, il se peut que votre classe ne se trouve pas dans le dossier src, auquel cas Eclipse pourrait ne pas le voir en tant que partie intégrante du projet. Cela invoquerait également le même message d'erreur que vous avez vu. 

44
zen

Faites un clic droit sur le dossier où vous mettez votre classe principale puis cliquez sur Build Path -> Use as Source Folder.

Enfin, lancez votre fichier principal en tant qu'application Java. J'espère que ce problème sera résolu.

43
Rashid

Le point d’entrée pour les programmes Java est la méthode:

public static void main(String[] args) {
    //Code
}

Si vous ne l'avez pas, votre programme ne fonctionnera pas. 

6
Aza

J'ai résolu ce problème en ajoutant un nouveau dossier source et en plaçant mon fichier Java à l'intérieur de ce dossier. "dossier source" n'est pas n'importe quel dossier, je crois. Son type de dossier spécial pour Java/Eclipse peut être ajouté à Eclipse en faisant un clic droit sur projet -> propriétés -> chemin buld Java -> source et ajouter un dossier.

5
mishal153

Peu de choses à vérifier:

  1. Avez-vous un paquet principal? Est-ce que tous vos cours sont sous ce paquet?
  2. Utilisez-vous une classe principale avec un public void static statique (String [] args)?
  3. Déclarez-vous: package; dans votre classe principale?
  4. Vous pouvez toujours nettoyer le projet avant de l'exécuter. Dans Eclipse - Il suffit d'aller dans Projet -> Nettoyer puis de relancer l'application. 
3
Eyal Sooliman

J'ai rencontré le même problème. J'ai corrigé par un clic droit sur le paquet -> Propriétés -> Chemin de construction Java -> Ajouter un dossier (sélectionnez le dossier dans lequel votre code réside).

3
Yang Zhang

J'utilise Eclipse d'Ubuntu. Avait ce même problème et a pu exécuter le programme via un terminal. Je viens donc de déplacer la public static void main(String[] args) { existante juste en dessous de la déclaration de classe (elle a été automatiquement formatée par Eclipse) et le lancement suivant a été un succès. Ensuite, la méthode principale est revenue à l’endroit où elle était auparavant et cela a bien fonctionné cette fois-ci.

2
hipokito

Vous devez placer tous vos fichiers (fichier.Java) dans le dossier racineSRC.

1
Dev M

Placez votre fichier principal Java dans le dossier src/main/Java et vérifiez s’il n’ya pas d’erreur dans 'Chemin de construction Java' en faisant un clic droit sur le projet et en sélectionnant Java Build Path->Source.

1
Rajiv Ranjan

J'ai eu ce problème dans deux projets. Maven et la ligne de commande ont fonctionné comme prévu pour les deux. Les problèmes étaient spécifiques à Eclipse. Deux solutions différentes: Projet 1): Déplacez la déclaration de la méthode main vers le haut de la classe, par-dessus toutes les autres déclarations telles que les champs et les constructeurs. Fou, mais ça a fonctionné. Projet 2): La solution pour le projet 1) n'a pas résolu le problème. Cependant, la suppression des importations Lombok et l’écriture explicite d’une méthode de lecture ont résolu le problème.

Conclusion: Eclipse et/ou le plugin Lombok ont ​​/ ont un bug.

0
Øyvind Roth

Assurez-vous que main dans public static void main(String[] args) est en minuscule. Pour moi, ça n'a pas marché quand je l'ai eu avec une majuscule.

0
sander

Lorsque vous enregistrez votre fichier, assurez-vous qu’il porte l’extension .Java. Dans le cas contraire, Eclipse ne saura pas le lire sous forme de fichier Java.

0
KC McLaughlin

Cela est arrivé à plusieurs reprises après avoir ajouté des images à un projet dans Eclipse et les avoir intégrées au chemin de génération. La solution consistait à cliquer avec le bouton droit sur la classe contenant la méthode main, puis à choisir Exécuter en tant que> Application Java. Il semble que lorsque vous ajoutez un fichier au chemin de génération, Eclipse suppose automatiquement que ce fichier se trouve à l'emplacement de la méthode main. En passant par le menu Exécuter en tant que, au lieu de simplement cliquer sur le bouton vert Exécuter en tant que, vous permet de spécifier le point d'entrée correct.

0
Keven M

Clic droit> Exécuter AS> Exécuter les configurations

Dans cet écran, si votre champ de texte "Classe principale" est vide, ajoutez le nom de la classe en cliquant sur le bouton "Rechercher" situé à droite du champ de texte et choisissez le fichier de classe. Et puis cliquez sur le bouton "Exécuter" en bas de l'écran de configuration. C'est tout

0
Yithirash

J'ai rencontré le même problème et j'ai constaté qu'il y avait une paire supplémentaire d'accolades (accolades) entourant le public void static (String args) {...}. Cette méthode devrait vraiment être au sommet de la classe et ne devrait pas être entourée d'accolades. Il semble possible de se retrouver avec des accolades autour de cette méthode lorsque vous travaillez dans Eclipse. Cela pourrait être une façon de voir ce problème lorsque vous travaillez avec Eclipse. Bonne codage!

0
shivesh suman