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.
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.
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
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.
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.
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.
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
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.