Erreur Java à l'aide de Pots, de java.lang.NoClassDefFoundError: javax/mail/Magasin
Je suis en train de faire une application java qui utilise Javamail, et il fonctionne très bien quand je compile il. Je veux le faire dans un fichier jar, de sorte qu'il peut être facilement déplacé autour et exécuté. Le problème est que j'obtiens cette erreur quand j'essaye d'exécuter le pot à partir de la ligne de cmd
java-jar ActriveTray2.jar
Exception in thread "main" java.lang.NoClassDefFoundError: javax/mail/Store
at stockApp.init(stockApp.java:11)
at ActiveTray.main(ActiveTray.java:31)
Caused by: java.lang.ClassNotFoundException: javax.mail.Store
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Voici ce qui est dans mon fichier jar
- images/tray.gif
- META-INF/MANIFEST.MF
- ActiveTray.class
- ActiveTray.java
- config.class
- config.java
- GmailFetch.class
- GmailFetch.java
- stockApp$1.class
- stockApp.class
- stockApp.java
Je pense que le problème est classpath, où le pot ne sait pas où les javamail bocal de vie. Mon classpath est correctement réglé lorsque j'exécute le code (java ActiveTray2), il fonctionne très bien...: (
OriginalL'auteur Rob | 2011-06-24
Vous devez vous connecter pour publier un commentaire.
vous devez ajouter les pots-vous compter sur le fichier de manifeste, et aussi les ajouter dans le pot que vous créez. java-jar ignore votre environnement classpath de l', de par leur conception.
De la java docs:
ainsi, vous pouvez ajouter une ligne à votre fichier manifeste comme:
à votre fichier manifeste.
Bien sûr, le pot doit être dans le bon endroit trop lorsque vous exécutez votre application.
Donc, dois-je ajouter mail.jar pour mon propre pot? Je ne sais pas comment faire référence à elle de sorte que le chemin est correct? Et j'ai googlé ce pendant une heure...
rob, dans mon exemple ci-dessus, le mail.jar aurait besoin d'être dans la "racine" de votre pot. vous pouvez également le mettre dans un répertoire, mais vous devez spécifier le répertoire dans le Chemin de Classe directive du manifeste.
Salut Paul, voici mon manifeste
OriginalL'auteur Paul Sanwald
Lorsque vous lancez un runnable jar fichier en java, la classe est ignoré, à la fois la variable d'environnement et de la ligne de commande classpath. Vous devez spécifier dans le fichier manifest de votre runnable jar file.
Voici quelques informations de wikipédia :
Vous manifester doit inclure :
Le chemin de classe sera la liste de l'emplacement des librairies que vous utilisez par rapport à l'emplacement de votre principal runnable jar file.
Ce qui concerne,
Stéphane
OriginalL'auteur Snicolas
La messagerie requis la mise en œuvre des bocaux doivent être présents dans votre classpath.
OriginalL'auteur rahulmohan
Même problème que j'ai rencontrés dans mon projet. La raison en est jar fichier manquant ou n'est pas à localiser dans le chemin de classe. Deux étapes pour résoudre ce problème.
D'abord ajouter API JavaMail 1.4.7 jar pour le chemin de classe.
Puis ajouter le même pot au serveur de la bibliothèque. Dans mon application j'ai utilisé Apache tomcat 7. j'ai mis le pot dans lib dossier
OriginalL'auteur RED.Skull