J'ai essayé de mettre HelloWorld dans un fichier .jar et de l'exécuter, mais cela ne fonctionne pas. J'ai créé le fichier Java et saisi le programme, puis écrit dans cmd:
javac HelloWorld.Java
java HelloWorld
et cela a fonctionné. Puis je suis entré
echo Main-Class: HelloWorld >manifest.txt
jar cvfm HelloWorld.jar manifest.txt HelloWorld.class
et a obtenu la sortie
added manifest
adding: HelloWorld.class(in = 426) (out= 288)(deflated 32%)
Je suis ensuite entré
Java -jar HelloWorld.jar
HelloWorld.jar
et la première ligne a fonctionné, tandis que la deuxième ligne m'a donné une erreur:
Error: Could not find or load main class path\HelloWorld.jar
qui est le même résultat que j'ai obtenu (dans une fenêtre qui se ferme rapidement) lorsque j'ai essayé de l'ouvrir avec le fichier Java.exe en jre7\bin 64 bits, jdk1.7.0_51\bin, jdk1.7.0_51\jre\bin, ainsi que jre7\bin 32 bits. J'ai désinstallé et réinstallé mes fichiers jre et jdk et recréé mes fichiers .class et .jar, mais le problème persiste. Je suis sur win8.
Edit: J'ai essayé de faire comme l'a suggéré Aetheria, mais pas de chance. Je mets HelloWorld.Java dans chemin\com\stackoverflow\user\blrp, le compile et cela fonctionne en entrant
Java com.stackoverflow.user.blrp.HelloWorld
dans le chemin. J'ai ensuite créé le manifeste et le bocal en:
(echo Manifest-Version: 1.0
echo Class-Path: .
echo Main-Class: com.stackoverflow.user.blrp.HelloWorld) >manifest.txt
jar cvfm HelloWorld.jar manifest.txt com\stackoverflow\user\blrp\HelloWorld.class
et a obtenu la sortie
added manifest
adding: com/stackoverflow/user/blrp/HelloWorld.class(in = 454) (out= 312)(deflat
ed 31%)
mais toujours, Java -jar HelloWorld.jar a fonctionné et HelloWorld.jar pas (même erreur). J'ai aussi essayé de ne pas faire le paquet, juste le Class-Path du manifeste, même résultat .
(En outre, j'ai résolu le problème avant de poser la question en utilisant un fichier .bat, mais il serait toujours agréable de faire fonctionner ce bocal.)
Merci jbaliuka pour la suggestion. J'ai ouvert l'éditeur de registre (en tapant regedit dans cmd) et en allant à HKEY_CLASSES_ROOT> jarfile> Shell> ouvrir>, puis en ouvrant (Par défaut) et en modifiant la valeur
"C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %*
à
"C:\Program Files\Java\jre7\bin\Java.exe" -jar "%1" %*
(Je viens de retirer le fichier javaw.exe.) Ensuite, vous devez cliquer avec le bouton droit de la souris sur un fichier jar -> ouvrir avec -> choisir le programme par défaut -> naviguer dans votre dossier Java et ouvrir\jre7\bin\Java. exe (ou tout autre fichier Java.exe dans votre dossier Java). Si cela ne fonctionne pas, essayez de passer à javaw.exe, ouvrez un fichier jar avec, puis revenez en arrière.
Je ne connais rien à la modification du registre, sauf que c'est dangereux. Vous voudrez peut-être le sauvegarder avant de le faire (dans la barre supérieure, Fichier> Exporter).
J'ai trouvé cette question lorsque je cherchais la réponse à la question ci-dessus. Mais dans mon cas, le problème était l’utilisation d’un "tiret" plutôt que d’un "tiret". Vérifiez quel tiret vous utilisez, il pourrait être le mauvais. J'espère que cette réponse accélère les recherches de quelqu'un d'autre, un commentaire comme celui-ci aurait pu me faire gagner un peu de temps.
Vous pouvez toujours exécuter ceci:
Java -cp HelloWorld.jar HelloWorld
-cp HelloWorld.jar
ajoute le fichier jar au chemin de classe, puis HelloWorld
exécute la classe que vous avez écrite.
Pour créer un fichier jar exécutable avec une classe principale sans package, ajoutez Class-Path: .
au manifeste:
Manifest-Version: 1.0
Class-Path: .
Main-Class: HelloWorld
Je conseillerais d'utiliser un package
pour donner à votre classe son propre espace de noms. Par exemple.
package com.stackoverflow.user.blrp;
public class HelloWorld {
...
}
Si ce problème ne pouvait pas trouver la réponse, j’ai donc cherché d’autres sujets, j’ai découvert que je faisais mon application avec 1,8, mais pour une raison quelconque, mon jre était obsolète même si je me souviens de l’avoir mise à jour. J'ai téléchargé le dernier jre 8 et le fichier jar fonctionne parfaitement. J'espère que cela t'aides.
J'ai rencontré le même problème lors de l'installation d'une configuration à l'aide d'un fichier jar. La solution qui a fonctionné pour moi est
Java -jar <<jar fully qualified path>>
Cela a fonctionné pour moi :)