Runnable jar fichier généré par Eclipse habitude de les exécuter?
J'ai généré un très simple exécutable, fichier jar avec Eclipse "d'Exportation-->Java-->Runnable Jar File" de la fonction. Mon HelloWorld classe ressemble à ceci:
import javax.swing.JFrame;
public class HWorld extends JFrame {
public static void main(String[] args) {
new HWorld();
}
public HWorld() {
this.setSize(200, 100);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("Hello World!");
this.setVisible(true);
}
}
Maintenant, après la génération de la .fichier jar , il fonctionne très bien à partir de la ligne de commande en utilisant la commande "java-jar HWorld.jar"
Mais, lorsque j'essaie d'exécuter le bocal sur son propre (qui, soit disant, devrait fonctionner) j'obtiens l'erreur suivante et je ne sais pas pourquoi:
E:\Eclipse\workspace>HWorld.jar
Exception in thread "main" java.lang.NoClassDefFoundError: E:\Eclipse\workspace\HWorld/jar
Caused by: java.lang.ClassNotFoundException: E:\Eclipse\workspace\HWorld.jar
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Could not find the main class: E:\Eclipse\workspace\HWorld.jar. Program will exit.
Mon manifeste ressemble à ceci:
Manifest-Version: 1.0
Rsrc-Class-Path: ./
Class-Path: .
Rsrc-Main-Class: HWorld
Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader
La seule chose qui semble vraiment louche pour moi, c'est ce (depuis un .bocal en est pas un .classe):
Could not find the main class: E:\Eclipse\workspace\HWorld.jar
À la recherche d'idées ou de pensées ou même une réponse! J'ai essayé de donner autant d'informations que possible, dans l'espoir d'une réponse qualitative. Ce fil implique qu'il devrait fonctionner, mais ne répond pas à ma question: http://forums.oracle.com/forums/thread.jspa?threadID=2152988 . Quelqu'un peut bien essayer dans Eclipse?
OriginalL'auteur djangofan | 2011-02-02
Vous devez vous connecter pour publier un commentaire.
Pots ne sont jamais "exécutable" dans ce sens. Ce que ce pot est bon pour est:
mise à jour les traces que vous avez fournie est bizarre. Il semble que Windows a décidé d'aller de l'avant et de lancer votre pot avec une certaine version de Java, mais passer d'un chemin à la place d'un nom de classe. Je ne sais pas de quoi l'histoire avec ça.
je ne suis pas trop sûr de votre réponse et en même temps, je crois que c'. maintenant, lorsque j'exécute le .jar fichier sans l'aide de "java" alors , comment est-il que l'interprète semble être en cours d'exécution? il me semble qu'il doit être de travailler à un certain degré?
sûr " lrdoe. Voir mon edit.
ouais, je vois ce que tu veux dire. dans le manifeste, je suis certainement à l'aide de "./" pour le répertoire local et il semble que la jarinjarloader est de le traduire dans un chemin d'accès absolu. je pourrais essayer de trouver le code source pour "jarinjarloader" si c'est possible.
depuis jarinjarloader est quelque chose de créé chez IBM, j'ai essayé de télécharger la version IBM de l'Éclipse, mais il ne marche pas contenir l'Exportation runnable jar option.
OriginalL'auteur bmargulies
De désinstaller toutes les anciennes versions de java sur mon ordinateur fixe le problème pour moi.
À ma fin, j'ai été en mesure d'exécuter le .fichier jar avec la ligne de commande, mais pas avec la valeur par défaut, double-cliquez sur l'option. Par la suite celui-ci travaillait à nouveau
OriginalL'auteur Rick Hindriks
Dans mon cas, par erreur, je n'avait pas déclaré la classe contenant du public static void main() d'une classe publique. Après la déclaration de la classe publique a été en mesure de résoudre ce problème avec la prochaine exportation comme runnable jar via eclipse...
Espère que cela aide...
OriginalL'auteur Indira Pai