.pot d'erreur - impossible de trouver ou charger la classe principale
J'ai essayé de mettre HelloWorld dans un .jar fichier et de l'exécuter, mais il ne fonctionne pas. J'ai créé le fichier java et tapé dans le programme, puis écrit dans le cmd:
javac HelloWorld.java
java HelloWorld
et cela a fonctionné. Ensuite, je suis entré
echo Main-Class: HelloWorld >manifest.txt
jar cvfm HelloWorld.jar manifest.txt HelloWorld.class
et a la sortie
added manifest
adding: HelloWorld.class(in = 426) (out= 288)(deflated 32%)
J'ai ensuite entré
java -jar HelloWorld.jar
HelloWorld.jar
et la première ligne travaillée, 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 un rapidement la fermeture de la fenêtre) quand j'ai essayé de l'ouvrir avec le java.exe fichier en 64 bits jre7\bin, jdk1.7.0_51\bin, jdk1.7.0_51\jre\bin, ainsi que 32 bits jre7\bin. Je l'ai désinstallé et réinstallé mon jre et jdk et recréé mon .classe et .les fichiers jar, mais le problème persiste. Je suis sur win8.
Edit: j'ai essayé de faire comme aetheria suggéré, mais pas de chance. J'ai mis HelloWorld.java en chemin\com\stackoverflow\utilisateur\blrp compilé, et il a travaillé en entrant
java com.stackoverflow.user.blrp.HelloWorld
en chemin. Ensuite, j'ai créé le manifeste et le bocal par:
(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 la sortie
added manifest
adding: com/stackoverflow/user/blrp/HelloWorld.class(in = 454) (out= 312)(deflat
ed 31%)
mais encore, java-jar HelloWorld.jar travaillé et HelloWorld.jar n'a pas (même erreur). J'ai aussi essayé de ne pas faire le paquet de chose, juste le Chemin de Classe dans le manifeste, même résultat.
(Aussi, j'ai résolu le problème avant de poser la question par l'utilisation d'un .le fichier bat, mais il faudrait toujours être doux pour obtenir que le bocal de travail.)
- le manifeste doit être mis en forme comme /META-INF/MANIFEST.MF décompresser n'importe quel fichier jar pour voir l'exemple de l'e.g jre/lib/rt.jar
- imprimer ligne vide à la fin de manifester, cela devrait fonctionner.
- echo crée le vide de la ligne automatiquement (sans la ligne vide, java-jar ne fonctionne pas non plus), et de manifester est emballé correctement quand le bocal est créé.
- J'ai essayé votre "echo" et ça marche pour moi avec "java-jar HelloWorld.jar". Vous pouvez modifier vous de registre de windows à utiliser la même commande pour ouvrir jar wile, mais normalement windows utiliser "javaw dans -jar HelloWorld.jar" commande pour ouvrir le bocal. javaw dans le lanceur est utilisé pour des applications avec interface graphique sans console.
Vous devez vous connecter pour publier un commentaire.
Grâce jbaliuka pour la suggestion. J'ai ouvert l'éditeur de registre (en tapant regedit dans cmd) et va HKEY_CLASSES_ROOT > jarfiles > shell > ouvrir > à la commande, puis l'ouverture (valeur par Défaut) et en changeant la valeur de
"C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %*
à
"C:\Program Files\Java\jre7\bin\java.exe" -jar "%1" %*
(J'ai juste enlevé le w dans le javaw.exe.) Après cela, vous devez faire un clic droit sur un pot -> ouvrir avec -> choisir le programme par défaut -> accédez à votre dossier java et open \jre7\bin\java.exe (ou tout autre java.exe fichier en vous java dossier). Si cela ne fonctionne pas, essayez de passer à javaw.exe, ouvrir un fichier jar avec elle, puis revenez.
Je ne sais rien à propos de la modification du registre, sauf que c'est dangereux, de sorte que vous pourriez voulez le sauvegarder avant de le faire (dans la barre du haut, le Fichier>Export).
Vous pouvez toujours exécuter cette:
-cp HelloWorld.jar
ajoute le jar au classpath, puisHelloWorld
exécute la classe que vous avez écrit.Pour créer un exécutable jar avec une classe principale avec pas de paquet, ajoutez
Class-Path: .
pour le manifeste:Je vous conseille à l'aide d'un
package
pour donner à votre classe de son propre espace de noms. E. g.J'ai trouvé cette question quand j'étais à la recherche de la réponse à la question ci-dessus. Mais dans mon cas, la question a été l'utilisation d'un tiret demi-cadratin "plutôt qu'un "dash". Vérifier dash vous utilisez, il peut être le mauvais. J'espère que cette réponse accélère quelqu'un d'autre recherche, un commentaire comme cela pourrait m'avez sauvé un peu de temps.
Eu ce problème ne pouvait pas trouver la réponse, je suis allé à la recherche sur d'autres threads, j'ai trouvé que je faisais de mon application à 1,8, mais pour une raison quelconque, mon jre a été dépassées, même si je me souviens de le mettre à jour. J'ai téléchargé le lastes jre 8 et le fichier jar fonctionne parfaitement. Espérons que cette aide.
J'ai connu le même problème lors de l'installation d'une configuration à l'aide d'un fichier jar. La Solution que travaillé pour moi, c'est
java -jar <<jar fully qualified path>>
Il a travaillé pour moi 🙂
java -jar HelloWorld.jar
travaillé avant même que j'ai posé la question. Aussi, sibin
est une partie de votrePATH
variable d'environnement, vous n'avez pas besoin d'aller à elle.