web-dev-qa-db-fra.com

Impossible de trouver la classe principale, le programme va quitter

J'ai créé un fichier jar exécutable avec la commande Invite dans Windows 7 à l'aide du

jar cvfm MyJarName.jar manifest.txt *.class

qui a créé le fichier .jar. Mais lorsque je tente de l'ouvrir, une fenêtre contextuelle s'affiche. 

Could not find the main class: <ClassName>. Program will exit.

Pourtant, quand j'utilise

Java -jar jarName.jar

dans l'invite de commande, cela fonctionne bien. Quel est le problème? Je veux pouvoir double-cliquer dessus.

25
Pojo

Ha, j'ai trouvé quel était le problème. J'ai créé mon programme avec jdk1.7, mais jre6 était installé. Je suis passé à jre7 et cela fonctionne très bien maintenant :)

Le

Java -jar jarname.jar

line fonctionnait dans l'invite de commande car mon chemin d'accès Java était défini sur le dossier jdk.

41
Pojo

Si vous utilisez JDK 1.6 ou une version ultérieure, vous pouvez remplacer l'attribut manifeste via l'indicateur e de l'outil Jar. (Lire - Définition d’un point d’entrée avec l’outil JAR) :

Exemple:

package pack;

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

Compiler et exécuter l'outil Jar,

c:\>jar cfe app.jar pack.Test pack/Test.class

Appeler l'application

c:>Java -jar app.jar
3
adatapost

Le fichier texte du manifeste doit se terminer par une nouvelle ligne ou un retour à la ligne. La dernière ligne ne sera pas analysée correctement si elle ne se termine pas par une nouvelle ligne ou un retour chariot.

2
Amila Jayawardhana

Je faisais face au même problème. Ce que j'ai fait, c'est que j'ai cliqué avec le bouton droit de la souris sur le projet-> Propriétés et que dans la liste déroulante "Sélectionner/Format binaire", j'ai sélectionné JDK 6. Ensuite, j'ai nettoyé et construit et maintenant, lorsque je clique sur le fichier Jar, tout fonctionne correctement. 

1
Murtuza

Extrayez le fichier jar et comparez le contenu du manifeste contenu dans le fichier jar avec votre fichier manifest.txt externe. Il est fort possible que vous localisiez le problème.

0
RHT

si vous construisez les fichiers source avec une version inférieure de Java (exemple Java1.5) et tentez d'exécuter ce programme/cette application avec une version supérieure de Java (exemple Java 1.6), vous obtiendrez ce problème . pour une meilleure explication, voir ce lien . cliquez ici

0
mallikgm

J'ai eu ce problème en ouvrant JMeter 4.0. J'ai fixé comme ci-dessous.

JRE 7 est installé dans le dossier Program Files (x86) et JDK 8 dans le dossier Program files. Je viens donc de désinstaller JRE7 de la machine. Je viens de garder la dernière version de JDK. Cela a résolu le problème.

0
Krish