web-dev-qa-db-fra.com

Erreur "Impossible de trouver la classe principale" lors de l'exécution du fichier jar exporté par Eclipse

J'ai un projet Java qui fonctionne parfaitement lorsque vous l'exécutez dans Eclipse. Lorsque j'essaie de l'exporter vers un "JAR file" ou un "Runnable JAR file", le fichier .jar est créé, mais lorsque je double-clique dessus pour essayer d'exécuter le programme, une erreur est générée. 

"Could not find the main class: package.MainClassName. Program will exit."

Comme je l'ai mentionné, j'ai essayé d'exporter vers les deux options JAR, j'ai spécifié la classe correcte dans laquelle se trouve la méthode principale et, lorsque je consulte les fichiers dans le fichier .jar, tout semble être en ordre - le manifeste ressemble à ceci:

Manifest-Version: 1.0
Main-Class: package.MainClassName
(blank line)

et se trouve dans le dossier META-INF. Il existe un dossier avec mon nom de package, qui contient tous les fichiers .class, y compris la classe contenant la méthode main. Quelques fichiers image et texte que j'utilise apparaissent également dans le fichier jar.

Le programme lui-même n’a rien de trop compliqué: c’est un simple jeu de "serpent" qui utilise Swing (plus le code fonctionne, même s’il est exécuté à partir d’Eclipse).

Toutes les idées qui causent cette erreur et comment je peux la réparer? Faites-moi savoir s'il y a d'autres informations que je devrais fournir.

23
scaevity

Ok, alors j'ai finalement réussi à le faire fonctionner. Si j'utilise le JRE 6 au lieu de 7, tout fonctionne très bien. Je ne sais pas pourquoi, mais ça marche.

6
scaevity

Vérifiez que vous pouvez démarrer votre application comme ça:

Java -cp myjarfile.jar snake.Controller

Je viens de lire quand je double-clique dessus - cela ressemble à un problème de configuration avec votre système d'exploitation. Vous double-cliquez sur le fichier dans une fenêtre de Windows Explorer? Essayez de l'exécuter depuis une console/terminal avec la commande

Java -jar myjarfile.jar

Lectures complémentaires


Le manifeste doit se terminer par une nouvelle ligne. Veuillez vérifier votre fichier, une nouvelle ligne manquante causera des problèmes.

19
Andreas_D

Exécutez-le comme ceci sur la ligne de commande:

Java -jar /path/to/your/jar/jarFile.jar
5
MobileMon

Aviez-vous essayé de créer un fichier .jar manuellement au lieu d'utiliser Eclipse. Essayez les étapes suivantes, espérons que cela pourrait aider:

Considérant que votre structure de répertoire ressemble à ceci: 

 TicTacToe(Your Project Name I mean)
 |              |                  |
src            bin             manifest.txt
             |    |
           icons  tictactoe

Supposons maintenant que ma classe principale est BeginGame à l'intérieur du paquet tictactoe. Je vais donc écrire dans mon fichier manifest.txt cette chose: 

Main-Class: tictactoe.BeginGame

Souvenez-vous de l'espace entre les deux points : et le nom du paquet, c'est-à-dire tictactoe, et immédiatement après BeginGame, appuyez sur Entrée et sauvegardez le fichier.

Maintenant, sur l'invite de votre commande, allez à l'emplacement du dossier bin, je décris mon côté comme suit: 

C:\Mine\Eclipse\TicTacToe\bin>jar -cfm ..\tictactoe.jar ..\manifest.txt tictactoe icons
  • Ici, le premier argument, i.e. ..\tictactoe.jar, est utilisé pour indiquer que créer tictactoe.jar un niveau supérieur, c’est-à-dire à l’intérieur de TicTacToe Folder.
  • Le deuxième argument ..\manifest.txt signifie que le fichier manifest.txt est situé à un niveau supérieur, c’est-à-dire à l'intérieur de TicTacToe Folder.
  • Les troisième et quatrième arguments tictactoe et icons signifient que ces deux dossiers sont ajoutés au fichier .jar, car ils sont placés dans le dossier bin et sont donc utilisés tels quels. Maintenant, appuyez sur Entrée.

Maintenant, essayez d’exécuter votre fichier .jar ainsi créé à l’intérieur du Project Folder (dossier TicTacToe, dans mon cas). 

Espérons que cela fonctionnera.

5
nIcE cOw

Avez-vous renommé votre projet/classe principale (par exemple, par la refactorisation)? Si tel est le cas, votre Configuration de lancement pourrait être configuré de manière incorrecte (par exemple, en vous référant à la classe ou à la configuration principale ancien). Même si le nom du projet apparaît dans la boîte de dialogue "Exporter le fichier jar", une inspection plus minutieuse peut révéler un nom de classe principal sans correspondance.

Allez dans 'Propriétés-> Paramètres d'exécution/de débogage' de votre projet et assurez-vous que votre configuration de lancement (identique à celle utilisée pour exporter le fichier jar exécutable) est définie sur le nom correct du projet ET votre classe principale est mis à name.space.of.your.project/YouMainClass.

1
count0

L’autre jour, j’ai rencontré les mêmes problèmes et cela m’a pris des jours pour que cela fonctionne . Le message d’erreur était "Impossible de trouver la classe principale", mais je peux exécuter le fichier jar exécutable exporté depuis Eclipse sur d’autres machines Windows aucun problème.

La solution consistait à installer les versions x64 et x86 de la même version de JRE. La variable d’environnement du chemin a été dirigée vers la version x64. Je ne sais pas pourquoi, mais ça a fonctionné pour moi.

0
feng63600

Faites un clic droit sur le projet. Aller aux propriétés. Cliquez sur Run/Debug Settings. Supprimez maintenant la configuration d'exécution de votre classe principale que vous essayez d'exécuter . Maintenant, lorsque vous appuyez à nouveau sur Exécuter, tout se passera bien.

0
user3374766

Pour les utilisateurs de netbeans qui ont ce problème est aussi simple:

1.Allez dans votre projet et faites un clic droit et sélectionnez Propriétés

2.Cliquez sur Exécuter, puis sur Navigateur.

3. Sélectionnez les images que vous souhaitez voir apparaître en premier.

0
kegs Production