Eclipse "Erreur: impossible de trouver ou de charger la classe principale"


108

J'ai un projet en éclipse sur mon ordinateur portable que j'ai poussé vers Git https://github.com/chrisbramm/LastFM-History-Graph.git

Cela fonctionne entièrement sur mon ordinateur portable et fonctionne / se construit sans problème, mais sur mon bureau, Eclipse ne donne pas l'erreur

Erreur: impossible de trouver ou de charger la classe principale lastfmhistoryguis.InputPanel

J'ai essayé de construire le projet à partir de:

Project>Build Project

Mais rien ne s'est passé. J'ai défini les PATHvariables de cet ordinateur sur JRE6, JRE7 et JDK 1.7.0 même si elles ne sont pas définies sur mon ordinateur portable.

J'avais un fichier Jar ( last.fm-bindings-0.1.1.jar ) qui était dans mon .classpathfichier qui se trouvait dans le dossier C: \ Users \ Chris \ Downloads sur mon ordinateur portable, il n'était donc pas inclus dans l'arborescence git que je récemment introduit dans le dossier du projet et engagé, mais je ne sais pas si je l'ai bien fait. Cela poserait-il également un problème, mais il n'y a pas d'argument principal ici.

Je ne peux pas comprendre maintenant ce que je dois vérifier / modifier.


24
Avez-vous essayé Project> Clean et Project> Build Project?
javaCity

3
Plusieurs fois et cela ne semble pas avoir fonctionné
Chris


Le chemin de classe environnemental du système comprend. Où dois-je changer et que dois-je faire précisément?
Chris

Dans mon cas, je courais java .\bin\selenium-server-standalone-3.9.1.jarquand cela aurait dû êtrejava -jar .\bin\selenium-server-standalone-3.9.1.jar
Coty Embry

Réponses:


40

Dans votre chemin de classe, vous utilisez un chemin absolu mais vous avez déplacé le projet sur une nouvelle machine avec très probablement une structure de fichiers différente.

Dans votre classpath, vous devriez donc (et probablement en général si vous allez regrouper JARS avec votre projet), utiliser un chemin relatif:

Dans votre changement .classpath

<classpathentry kind="lib" path="C:/Users/Chris/Downloads/last.fm-bindings-0.1.1.jar" sourcepath=""/><classpathentry kind="lib" path="C:/Users/Chris/Downloads/last.fm-bindings-0.1.1.jar" sourcepath=""/>

à

<classpathentry kind="lib" path="last.fm-bindings-0.1.1.jar"/>

19
Comment changerait-on cela?
Aequitas du

Je n'ai pas de pots externes mais je suis confronté à des problèmes similaires. stackoverflow.com/questions/49738153/…
Jesse

@Aequitas fait "Exécuter" -> "Exécuter en tant que" -> "Application Java". une fois, et il définira automatiquement le chemin de la classe. Voir la réponse de Blamkin86. Les paramètres de Classpath se trouvent sous "Exécuter" -> "Exécuter les configurations ...".
gkubed

72

Si vous créez une classe java avec public static void main(String[] args), Eclipse exécutera cette méthode principale pour vous en cliquant avec le bouton droit sur le fichier lui-même, ou sur le fichier dans l'explorateur de projet, puis en choisissant:

"Exécuter en tant que" -> "Application Java".

Une fois que vous faites cela, Eclipse stocke des informations sur votre classe, de sorte que vous pouvez facilement exécuter à nouveau la classe à partir du menu Exécuter en tant que (bouton de lecture vert sur la barre d'outils) ou à partir de la boîte de dialogue Exécuter les configurations.

Si vous déplacez par la suite la classe java (manuellement ou cependant), choisissez à nouveau

«Exécuter en tant que» -> «Application Java»,

à partir du nouvel emplacement, Eclipse exécutera la configuration stockée d'origine, tentera d'appeler cette classe à partir de son emplacement d'origine, ce qui provoquera cette erreur.


SOLUTION:
Pour moi, le correctif était d'aller dans les configurations d'exécution, (Bouton de lecture vert -> Configurations d'exécution) et de supprimer toutes les références à la classe. La prochaine fois que tu courras

"Exécuter en tant que" -> "Application Java"

Eclipse écrira une nouvelle configuration pour la classe déplacée et l'erreur disparaîtra.


2
Merci..!! Celui-ci a fonctionné pour moi. Le problème a commencé lorsque j'ai changé le nom du projet.
NixRam

+1 public static void main(String[] args)est ce qui m'a attiré. J'ai accidentellement eu la mauvaise signature ( Mainau lieu de main). Il est donc important de s'assurer que la signature est correcte. :)
Nicholas Miller

10
Comment "supprimer toutes les références à la classe"?
aCarella

2
A fonctionné comme un charme. Mon problème était que j'avais créé un build.gradle et un settings.gradle qui changeaient les noms par défaut associés au projet. Suppression des références (exécuter en tant que -> exécuter les configurations -> supprimer toutes les configurations associées au projet)
randombee

1
"supprimer toutes les références à la classe" - dois-je supprimer toutes les configurations d'exécution?
jcool

55

tl; dr : Nettoyez tout votre chemin de compilation et tout ce que vous y avez ajouté manuellement. Cela comprend des sources supplémentaires, des projets, des bibliothèques.

  • Projet -> Nettoyer
  • Assurez-vous que Project -> Build est automatiquement actif
  • Projet -> Propriétés -> Chemin de construction Java -> Bibliothèques: supprimez toutes les bibliothèques externes que vous avez déjà ajoutées . Ne supprimez pas les bibliothèques standard comme la bibliothèque système JRE.
  • Essayez de diriger votre classe principale maintenant. L'erreur "classe introuvable / chargement" devrait avoir disparu. Essayez d'ajouter vos bibliothèques / jars externes les unes après les autres.

Raison derrière cela: le compilateur avait des problèmes pour relier les bibliothèques au projet. Il a échoué et a produit un mauvais message d'erreur.

Dans mon cas, cela aurait dû être quelque chose comme "Impossible d'ajouter AutoHotkey.dll au chemin de construction" car c'est ce qui a fait échouer le compilateur.


Si cela ne fonctionne toujours pas, jetez un œil au ErrorLog intégré d'Eclipse :

Fenêtre -> Afficher la vue -> Général -> Journal des erreurs


27

J'ai fait toutes les choses mentionnées ci-dessus, mais aucune n'a fonctionné pour moi

Mon problème a été résolu comme suit:

  1. Cliquez avec le bouton droit sur votre projet> Propriétés> JavaBuildPath> Bibliothèques .
  2. Retirez le fichier jar, avec un drapeau rouge dessus.
  3. Si le problème persiste, essayez la solution ci-dessous. Cela a fonctionné pour moi lorsque j'ai rencontré ce problème la deuxième fois:
    1. Cliquez avec le bouton droit sur Projet> Propriétés> Chemin de construction Java> Bibliothèques
    2. Supprimer la bibliothèque
    3. Ajouter une bibliothèque. (Choisissez la bibliothèque système JRE)

travaillé pour moi! J'avais également un point d'exclamation à côté du nom de mon dossier Projet. Cela a corrigé cela aussi
benzabill

A travaillé pour moi! Merci
Dhruv Kaushal

1
cela a fonctionné en supprimant et en ajoutant simplement la même bibliothèque JRE java
Andrew Norman

Cela a fonctionné pour moi même s'il n'y avait pas d'avertissement ni de point d'exclamation
Michał Leon

Frère, vous venez de sauver mon projet AP Java, vous n'avez aucune idée merci beaucoup
Rohan Singh

18

J'ai rencontré un problème similaire dans mon projet maven webapp après avoir passé près d'une heure, j'ai trouvé une solution qui a fonctionné pour moi.J'ai tapé la commande maven suivante et cela a fonctionné

mvn clean install -U
Je ne connais pas la raison exacte derrière cela.


1
Même chose pour moi - je ne sais pas non plus pourquoi cela s'est produit en premier lieu.
ns du

En éclipse, clic droit sur Run As..Maven clean, puis Run As..Maven installfais-le pour moi. Le problème a commencé lorsque j'ai changé un projet java eclipse pour devenir un projet eclipse maven. +1 pour pointer dans la bonne direction.
CodeMed

-U, - update-snapshots Force une vérification des versions manquantes et des instantanés mis à jour sur les référentiels distants
Kanagavelu Sugumar

9

Je suppose que vous avez importé le projet dans votre installation d'éclipse de bureau? Si tel est le cas, vous devez simplement sélectionner Projet> Nettoyer. Puis reconstruisez votre projet. A fonctionné à merveille pour moi.


9

J'ai eu le même problème et je l'ai résolu en utilisant:

Eclipse Mars
Egit
Github
Maven Project

Le problème était que j'avais rendu mon projet maven disponible sur github. Il a déplacé mon projet dans mon dossier github.

Solution:

  • Fermer Eclipse
  • Supprimer le dossier de métadonnées dans votre espace de travail
  • Redémarrez Eclipse

L'écran de démarrage s'affiche.

  • Fermez l'écran de démarrage
  • Cliquez avec le bouton droit dans l'explorateur de packages
  • Choisissez "import maven project",
  • Accédez à votre dossier github et importez le projet maven.

Après cela, mon projet a été compilé avec succès.


7

Vérifiez que votre projet a un constructeur en:

  • vérifier les propriétés du projet (dans "l'explorateur de packages", cliquez avec le bouton droit sur le projet, sélectionnez "propriétés"), là la deuxième section est "Constructeurs", et elle doit contenir le "Java Builder" par défaut
  • ou regardez dans le fichier ".project" (dans ... / workspace / yourProjectName / .project) la section "buildSpec" ne doit pas être vide.

Il doit y avoir d'autres moyens, mais ce que j'ai fait était:

  • arrête l'éclipse
  • éditez le fichier. "project" pour ajouter la section "buildSpec"
  • redémarrer eclipse

Un fichier java minimal ".project" approprié devrait ressembler à:

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
        <name>myProjectName</name>
        <comment></comment>
        <projects>
        </projects>
        <buildSpec>
                <buildCommand>
                        <name>org.eclipse.jdt.core.javabuilder</name>
                        <arguments>
                        </arguments>
                </buildCommand>
        </buildSpec>
        <natures>       
                    <nature>org.eclipse.jdt.core.javanature</nature>
        </natures>      
</projectDescription>

1
Cela a réglé le problème pour moi. Vous n'avez pas besoin d'arrêter Eclipse pour modifier le .projectfichier, vous pouvez simplement fermer le projet.
Luís de Sousa

Moi, d'autre part, je viens d'arrêter Eclipse (mais je n'ai pas édité le .projectfichier. Rallumé Eclipse, et cela a fonctionné: l'erreur a disparu.
Shahar

6

Eh bien, ce qui suit a fonctionné pour moi ...

  1. Je suis allé dans le dossier du projet (à l'intérieur workspace)
  2. Ensuite, supprimé le bindossier
  3. Ensuite, projet / projets nettoyés (dans Eclipse)
  4. construit / exécuté à partir d'Eclipse.

Bienvenue à SO, DeeCod. Supprimer le dossier bin et faire un "projet> nettoyer" et construire a déjà été suggéré dans d'autres réponses. Plutôt que de poster un "moi aussi" comme réponse, je vous recommande d'avoir suffisamment de réputation (vous n'en avez besoin que de 50) pour publier des commentaires et confirmer qu'une approche particulière a fonctionné pour vous dans un commentaire.
Amos M. Carpenter

1
Merci Amos! Quoi qu'il en soit, je suis désolé si je me trompe, pour autant que je vois -> La suppression du bac avant le nettoyage / la reconstruction n'est pas suggérée dans les autres réponses de ce fil ... Just Clean> build n'a pas fonctionné dans mon scénario ... tant que cela aide quelqu'un :)
DeeCode

Pas de soucis - j'ai rencontré beaucoup de ces scénarios où essayer des combinaisons de choses étranges fonctionne soudainement sans raison apparente. ;-)
Amos M. Carpenter

4

Une chose similaire m'est arrivée à quelques reprises, le seul moyen que je connaissais pour résoudre ce problème était de supprimer le dossier de métadonnées. Heureusement, j'ai trouvé un autre moyen.

Essayez d'accéder aux propriétés du projet > Chemin de construction Java> onglet Ordre et exporter> tout sélectionner (ou essayez de jouer avec les cases à cocher).

Cela devrait entraîner une reconstruction complète du projet et Eclipse pour voir la classe principale.

Ajout: j'ai remarqué que ce bug se produit lorsque vous avez de nombreux projets dans un espace de travail et que certains d'entre eux sont mal configurés (un point d'exclamation rouge apparaît). La correction du chemin de construction du projet et d'autres paramètres (même si ce projet n'est pas lié à celui avec lequel vous rencontrez des problèmes) devrait résoudre un problème.


4

Mon Main classproblème n'a pas pu être trouvé ou chargé est causé par une raison intéressante.

Dans notre projet, nous utilisons Mavencomme outil de construction et ma main class extendsclasse a, qui est sur le class pathmais sa portée l'était test, tandis que le main classn'est pas sous le package de test.

Si votre classe principale est extendsune classe, essayez d'abord de l'exécuter main classen supprimant une extendspartie. S'il s'exécute, vous comprendrez au moins que le problème n'est pas dû à run configurationou eclipsemais à la classe, votre main class extends.


4

Pour moi, la raison pour laquelle cette erreur a commencé à apparaître était due au fait que le chemin de classe dépassait la limite de Windows. Puis j'ai découvert l'option "Utiliser un JAR temporaire pour spécifier le chemin de classe (pour éviter les limitations de longueur du chemin de classe)". La sélection de cette option a résolu le problème pour moi. L'option réside dans Configuration Exécuter / Déboguer, onglet Chemin de classe, voir l'image ci-dessous.

entrez la description de l'image ici


3

Ce problème se produit également lorsque vous avez des caractères spéciaux dans le chemin de votre espace de travail. J'avais mon espace de travail dans mon dossier personnel et son nom était en grec, donc cela ne fonctionnait pas. J'ai changé mon espace de travail, ne contient maintenant que des caractères anglais dans son chemin, et maintenant le projet est construit sans aucun problème.


3

Si vous utilisez eclipse, les étapes suivantes résoudront votre problème:

Allez dans Exécuter -> Exécuter les configurations -> Recherche de classe principale -> Localisez votre classe manuellement -> Appliquer -> Exécuter


3

J'ai eu cette erreur. C'était parce que j'avais static void main(String[] args)
au lieu de public static void main(String[] args)

J'ai passé près d'une heure à essayer de comprendre cela.

Remarque: la seule différence est que je n'ai pas déclaré mainêtrepublic


3

Si votre code est bon et que vous savez que vous rencontrez un problème Eclipse, cela le résoudra.

Vous pouvez simplement supprimer $ yourproject / .classpath, $ yourproject / .project et $ yourworkspace / .metadata. Quelqu'un d'autre a mentionné cette option. Cela fera exploser tout votre espace de travail. Au lieu:

  1. Supprimer .classpath et .project de votre projet
  2. Supprimez votre projet dans eclipse. NE PAS vérifier supprimer le contenu du projet sur le disque.
  3. Maintenant, dans un explorateur de fichiers, allez dans $ yourworkspace / .metadata.
  4. Recherchez $ yourprojectname
  5. Supprimez tout ce que vous trouvez. Il devrait être prudent de supprimer tout ce qui se trouve dans le répertoire .metadata.
  6. Dans eclipse: Fichier> Importer> Général> Projets à partir d'un dossier ou d'une archive> $ yourproject> terminer
  7. Cliquez avec le bouton droit sur votre projet> propriétés> Chemin de construction Java> onglet Source
  8. Sélectionnez tous les dossiers source, supprimez.
  9. Ajoutez un dossier, sélectionnez src (quel que soit le nom de votre dossier src) et ajoutez-le
  10. Aller à l'onglet bibliothèques
  11. Ajoutez tous les fichiers JAR à votre chemin de construction ici. Il ne devrait plus y avoir d'erreurs sur votre projet maintenant.
  12. Exécutez votre projet comme vous le feriez normalement.

J'écrase le .classpathet le .projectfichier avec des fichiers d'un autre projet, et cela a fonctionné ... est-ce une coïncidence ou le chemin de classe est vraiment ce qui compte?
Amarth Gûl

Probablement une coïncidence puisque ces fichiers sont spécifiques à votre projet. Vous avez peut-être fait en sorte qu'éclipse régénère ces fichiers sans le savoir en introduisant des erreurs. Ouvrez le fichier et lisez-le et vous aurez une idée de ce qu'ils font. Classpath contient les répertoires de dossiers libs et src et .project stocke des plugins et des éléments de facette de projet
Brent Sandstrom

3

cela pourrait causer des bibliothèques jdk si vous aviez importé dans jre

cela m'arrive, alors vérifiez les jar jre installés

dans eclipse, cliquez sur Windows> Préférences> Java> Jres installés> cliquez sur Jre et éditez après cela, regardez dans la liste des jar assurez-vous qu'aucun n'est de jdk ou corrompu, entrez la description de l'image ici


2

Je rencontre le même problème, mais dans mon cas, il a été causé par un dossier source manquant (vide) (il existe dans le projet d'origine, mais pas dans le référentiel GIT car il est vide).

Après avoir créé le dossier manquant, tout fonctionne.


2

J'ai également reçu cette erreur, juste après avoir déplacé certaines ressources. En vérifiant le journal des erreurs, j'ai vu qu'Eclipse ne pouvait pas faire de build car il ne pouvait pas supprimer un fichier / dossier. Essayez de supprimer manuellement le dossier "bin" (ou ce qu'il est appelé pour vous).

Au moins, ça a fait l'affaire pour moi.


oui. après avoir déplacé le projet vers git. Le problème se produit. J'essaye ceci et je dois aussi "fermer le projet" et "ouvrir le projet" pour faire l'affaire.
Yeung

2

J'ai rencontré cette erreur aujourd'hui parce que j'ai mis en place un programme hello world, puis j'ai coupé et collé un nouveau programme dans le même fichier. Pour résoudre le problème de ne pas trouver bonjour le monde car le dernier s'appelait, j'ai cliqué sur Exécuter-> Exécuter les configurations, puis sous Classe principale, j'ai cliqué sur Rechercher et il a trouvé mon nouveau nom de classe et l'a remplacé par le nouveau nom correct dans le texte que j'ai collé . C'est un problème de débutant que je connais, mais il est également facile à résoudre. J'espère que ça aidera quelqu'un! Douglas


2

J'ai eu le même problème avec le fichier .classpath correct, et j'ai vite constaté que ce n'était pas le fichier .classpath compté (après avoir résolu ce problème, je remplace le fichier .classpath exploitable par celui d'origine, le projet fonctionnait toujours, ce qui signifie que le fichier. classpath n'était pas le cas)

Puisqu'il s'agit d'un projet Maven, je n'ai fait que:

  1. mvn eclipse: nettoyer
  2. supprimer le projet eclipse
  3. importer le projet
  4. terminé

J'espère que ça aide!


2

Cela se produit principalement, car Eclipse nettoie les .classfichiers, mais ne les reconstruisez pas. Vérifiez le bindossier, il devrait être vide. Ensuite, vous devriez vérifier s'il y a autre chose qui cause l'échec de la compilation. Vous avez peut-être ajouté des fichiers JAR dans classpath, qu'Eclipse ne pourrait peut-être pas trouver.


2

Accédez simplement à votre explorateur de packages et appuyez sur F5, ou pour certains ordinateurs portables fn + F5. La raison en est qu'éclipse pense que les fichiers sont quelque part, mais les fichiers sont en fait ailleurs. En le rafraîchissant, vous les mettez tous les deux sur la même page. Ne vous inquiétez pas, vous ne perdrez rien, mais si vous voulez être très prudent, sauvegardez simplement les fichiers de votre dossier de projets java dans un endroit sûr.


Cela a fonctionné pour moi. J'ai rencontré le problème après la mise à niveau vers une version plus récente d'Eclipse. C'est un projet gradle, et gradle clean eclipse n'a pas résolu le problème. Un simple rafraîchissement l'a fait.
navette

2

Ce sont les étapes simples qui m'ont aidé à résoudre ce problème.

  1. Fermer l'éclipse
  2. Supprimez le dossier ".metadata" de votre espace de travail. (peut être un dossier caché)
  3. Ouvrez l'éclipse (il créera automatiquement le dossier ".metadata" dans votre espace de travail)
  4. Essayez d'exécuter le programme.

Cela détachera mon projet de l'espace de travail. Vous devrez à nouveau importer tous vos projets!
Muhammad Gelbana

Je suis d'accord avec @MuhammadGelbana, j'ai supprimé le .metadata et cela a fait exploser mon espace de travail. Soyez très prudent lorsque vous essayez cette solution.
TYMG

2

Pour résoudre cette erreur, procédez comme suit:

Étape 1: Ouvrez le .project fichier .

Étape 2: Vérifiez deux balises ...

    a) <buildSpec>

    b) <natures>

Étape 3: Si les balises mentionnées ci-dessus n'incluent aucun contenu, l'erreur ci-dessus va sûrement se produire.

Étape 4: Ajoutez le contenu suivant à chaque balise afin de résoudre l'erreur ci-dessus.

Pour <buildSpec>:

<buildSpec>
    <buildCommand>
        <name>org.eclipse.jdt.core.javabuilder</name>
        <arguments>
        </arguments>
    </buildCommand>
</buildSpec>

Pour <natures>:

<natures>
    <nature>org.eclipse.jdt.core.javanature</nature>
</natures>

Étape 5: Enregistrez votre fichier en appuyant sur ctrl + s.

Étape 6: Pour plus de sécurité, fermez simplement le projet une fois et rouvrez-le.

Étape 7: C'est tout. Vous êtes prêt à basculer !!!

Veuillez mentionner dans les commentaires si la solution a été utile.

Je vous remercie.


2

Vérifiez le journal des erreurs de l'espace de travail (Windows-> Afficher la vue -> Journal des erreurs). Si vous voyez que l'un des fichiers importés du fichier jar est corrompu, supprimez le dossier de référentiel correspondant et réimportez à nouveau.


2

2 types de solutions sortent pour le même.

(1) Allez à exécuter les configurations: - exécuter-> exécuter les configurations Dans l'onglet Classpath:

Sélectionnez Ajout avancé où Eclipse place généralement la classe *. Pour les projets, qui est dans la corbeille. J'ai donc ajouté le répertoire bin pour le projet.

(2) Si la première solution ne fonctionne pas, cela signifie que le fichier jar que vous indiquez pour votre projet prend le chemin de votre dépôt Maven local qui n'est pas mis à jour pour votre projet, il vaut donc mieux vérifier le fichier jar de ce dépôt maven local et copiez-le, collez-le simplement dans un nouveau projet ou téléchargez-le simplement à partir de n'importe quel site et configurez-le dans votre chemin de construction.

J'espère que cela aide.


1

J'ai eu le même problème. J'ai passé quelques heures et j'ai finalement changé mon espace de travail en dossier local et tout fonctionne maintenant. Peut-être gagner du temps pour les autres. Jon


1

Je viens d'avoir ce problème après avoir d'abord eu le problème de Windows 8 refusant de mettre à jour mon chemin, peu importe ce que j'ai défini JAVA_HOME - java -version a signalé le dernier JDK au lieu de celui que j'ai stocké dans JAVA_HOME. J'ai finalement réussi à faire fonctionner cela en mettant '% JAVA_HOME% / bin;' à l'avant de la variable d'environnement de chemin plutôt qu'à la fin. Ensuite, j'ai lancé Eclipse et tout d'un coup, il n'a pas pu trouver ma classe principale alors que cela fonctionnait bien avant cela. Ce que j'ai fait pour résoudre ce problème a été entré dans les propriétés du projet, supprimé la bibliothèque JRE existante de l'onglet bibliothèques, ajouté un nouveau JRE en sélectionnant le bouton "Ajouter une bibliothèque", puis j'ai suivi les invites pour installer JRE 7 comme JRE par défaut. Maintenant, tout est de retour au travail.


1

J'ai trouvé une autre solution dans mon cas à ce problème: Eclipse->Preferences->Java->Installed JREpuis appuyez sur le bouton Rechercher. Sélectionnez le dossier sous Linux /usrpuis Eclipse a trouvé toutes les JVM.

Sélectionnez une autre JVM trop actuelle . C'est résolu pour mon cas.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.