Exe jar librairies [Résolu]

Signaler
Messages postés
56
Date d'inscription
samedi 4 novembre 2000
Statut
Membre
Dernière intervention
5 septembre 2005
-
Messages postés
56
Date d'inscription
samedi 4 novembre 2000
Statut
Membre
Dernière intervention
5 septembre 2005
-
Yo !
J'ai un problème avec mon exe. J'ai généré un exécutable sous Jbuilder X. Quand je le lance en mode console, j'ai le message suivant :
Exception in thread "main" java.lang.NoClassDefFoundError: javax/comm/SerialPortEventListener
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:502)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:250)
at java.net.URLClassLoader.access$100(URLClassLoader.java:54)
at java.net.URLClassLoader$1.run(URLClassLoader.java:193)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:186)
at java.lang.ClassLoader.loadClass(ClassLoader.java:299)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:265)
at java.lang.ClassLoader.loadClass(ClassLoader.java:255)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:315)
at version_06.MonAppli.(MonAppli.java:20)
at version_06.MonAppli.main(MonAppli.java:86)

Quand j'ai généré l'exe, j'ai inclu ttes les librairies et jar que j'utilise. Apparemment mal car c'est de là que viendrait le problème puisque le javax/comm/SerialPortEventListener fait partie d'un jar ajouté.
J'ai essayé de modifier le classpath... mais toujours le même message. J'en ai ma dose donc si quelqu'un pouvait m'éclairer... merci à vous !

18 réponses

Messages postés
500
Date d'inscription
mercredi 20 août 2003
Statut
Membre
Dernière intervention
11 juillet 2007

essaies:



java -classpath "v:\version70\version06.jar;
c:\librairiesIndispensables\comm.jar;
c:\librairiesIndispensables\jdbc.jar;" version_06.MonAppli
Messages postés
56
Date d'inscription
samedi 4 novembre 2000
Statut
Membre
Dernière intervention
5 septembre 2005

On y arrive ! Tout à l'heure, je te disais que ça marchait avec la commande de JBuilder : javaw -classpath "v:\version70\classes; c:\librairiesIndispensables\comm.jar; c:\librairiesIndispensables\jdbc.jar; + les autres .jar de Jbuilder" version_06.MonAppli
Effectivement, ça n'utilisait pas le .jar que j'avais créé mais dans l'euphorie que ça marchait, j'ai pas tilté.
Donc j'ai repris ta commande de départ et j'ai ajouté les autres .jar de Jbuilder. Ce qui me donne : java -classpath "v:\version70\version06.jar; c:\librairiesIndispensables\comm.jar; c:\librairiesIndispensables\jdbc.jar; + les autres .jar de JBuilder" version_06.MonAppli

Et là ça marche nickel. Merci pour ta précieuse aide !!!
Messages postés
56
Date d'inscription
samedi 4 novembre 2000
Statut
Membre
Dernière intervention
5 septembre 2005

J'ai demandé une copie du manifest à la génération de l'exécutable. Et dedans, y a pas la ligne Class-Path:...
Ainsi il peut pas trouver mes fichiers jar... Mais je sais toujours pas comment je peux faire...
Messages postés
500
Date d'inscription
mercredi 20 août 2003
Statut
Membre
Dernière intervention
11 juillet 2007

Beurk! Generer un exe! Et la portabilite!
Messages postés
56
Date d'inscription
samedi 4 novembre 2000
Statut
Membre
Dernière intervention
5 septembre 2005

Oué je sais. Mais faut que ce truc fonctionne sur n'importe quelle machine. Au pire, même un jar, ça m'irait; Mais j'ai toujours le problème des librairies absentes !
Messages postés
500
Date d'inscription
mercredi 20 août 2003
Statut
Membre
Dernière intervention
11 juillet 2007

Qd tu generes ton jar sous jbuilder, tu a le choix d'inclure ou d'exclure les ressources.

Si tu choisis de les exclures tu dois faire un script de lancement pour ajouter au classpath les ressources.

Sois un script .bin sous linux, sois un .bat sous windows. A ce moment la, tu lances le script et non le jar.
Messages postés
56
Date d'inscription
samedi 4 novembre 2000
Statut
Membre
Dernière intervention
5 septembre 2005

Quand je génère le jar sous jbuilder, je demande d'inclure les ressources... Mais j'ai lu quelque part, que des fichiers jar ne pouvaient pas être incorpérés dans un autre jar.
A ce moment là, je vais opter pour les exclure. Par contre, je vois pas trop ce qu'il faut mettre dans le .bat... Pourrais tu m'éclairer.. Je te remercie !
Messages postés
56
Date d'inscription
samedi 4 novembre 2000
Statut
Membre
Dernière intervention
5 septembre 2005

peut-être je tape pas la bonne commande sous l'invite de commandes : java -jar "version 06.jar"
J'ai regardé dans ma variable d'environnement classpath, j'ai remis tout ce que Jbuilder me mettait à la compilation.
Messages postés
500
Date d'inscription
mercredi 20 août 2003
Statut
Membre
Dernière intervention
11 juillet 2007

Si tu peux inclure des jar dans un jar (sinon jbuilder ne te le proposerait pas) mais c'est plus propre de les avoir en dehors.



exeemple de .bat simple (dans un bloc note, tu enregistres ensuite sous un nom genre nom_appli.bat)



C:\j2sdk1.4.2_01\bin\java -cp " C:\monjar.jar; C:\jarressource1; C:\jarressource2" monPackage.maclassePrincipale



sous linux, idem, mais tu enregistre sous un .bin, et a la place des separateurs ";" tu as des ":"



#!/bin/sh

/usr/java/j2sdk1.4.2_01/bin/java -cp " C:\monjar.jar: C:\jarressource1: C:\jarressource2" monPackage.maclassePrincipale
Messages postés
500
Date d'inscription
mercredi 20 août 2003
Statut
Membre
Dernière intervention
11 juillet 2007

Tu peux aussi taper les commande en console, commande idem.
Messages postés
56
Date d'inscription
samedi 4 novembre 2000
Statut
Membre
Dernière intervention
5 septembre 2005

Merci mais j'ai toujours le même message que j'avais tout au début. Peut-être ça vient de mon arborescence.
Voilà ce que j'ai tapé :
java -cp "v:\version70\version06.jar; c:\librairiesIndispensables\comm.jar; c:\librairiesIndispensables\jdbc.jar;" version_06.MonAppli

L'arborescence sous Jbuilder est celle-ci :
version70\mon_appli.bat
version70\version06.jar
version70\src\version_06\*.java
version70\classes\version_06\*.class

Désolé, je suis pas doué.
Messages postés
500
Date d'inscription
mercredi 20 août 2003
Statut
Membre
Dernière intervention
11 juillet 2007

C'est le meme message qu'au depart que tu obtiens???
Messages postés
56
Date d'inscription
samedi 4 novembre 2000
Statut
Membre
Dernière intervention
5 septembre 2005

Aucun changement. Toujours le même message. Donc je me suis fortemement inspiré de ton truc et j'ai copié dans le .bat la commande que jbuilder lance pour lancer l'appli. Et là, ça marche ! Elle différence très peu de la tienne.
Elle utilise javaw au lieu de java (je sais pas trop la différence car en cours, sous linux, j'utilisais aussi java pour lancer). Par contre, il me manquait plein de librairies propres à JBuilder dans le classpath...

Encore merci pour ton aide... J'y vois beaucoup plus clair !
Messages postés
500
Date d'inscription
mercredi 20 août 2003
Statut
Membre
Dernière intervention
11 juillet 2007

Ce n'est pas normal qu'avec ce que j'ai t'ai donne, ca ne marche pas,

la commande de jbuilder passe par les classes, et pas par un jar...
Messages postés
56
Date d'inscription
samedi 4 novembre 2000
Statut
Membre
Dernière intervention
5 septembre 2005

Peut être je m'y prend mal dans la construction du jar sous jbuilder. C'est koi la commande pour que je puisse le créer, et suivre la commande que tu m'as filé ?
Messages postés
56
Date d'inscription
samedi 4 novembre 2000
Statut
Membre
Dernière intervention
5 septembre 2005

A lire le message tout en haut, ça viendrait du javax/com/Serial... Mais ça, c une classe du fichier comm.jar que j'importe.
Messages postés
500
Date d'inscription
mercredi 20 août 2003
Statut
Membre
Dernière intervention
11 juillet 2007

tu peux utliser le wizerd de jbuilder, on l'utilise pour notre appli pro et il fonctionne tres bien,

qd tu as beaucoup de classe, beaucoup de ressources, c'est plus pratique.

je ne me souviens plus de la commande exact pour faire un jar, maisd si
tu tape juste "jar" en console tu dois obtenir toutes les infos.
Messages postés
500
Date d'inscription
mercredi 20 août 2003
Statut
Membre
Dernière intervention
11 juillet 2007

Hum, tu as du te planter dans le path de comm.jar tout simplement,
regarde celui qu'utilise jbuilder et regarde le path que tu mets toi...