IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JDBC Java Discussion :

Création d'un jar exécutable ?


Sujet :

JDBC Java

  1. #1
    Membre régulier Avatar de POKOU
    Homme Profil pro
    developpeur
    Inscrit en
    Décembre 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : developpeur

    Informations forums :
    Inscription : Décembre 2008
    Messages : 121
    Points : 101
    Points
    101
    Par défaut Création d'un jar exécutable ?
    Bonjour,

    Pour créer un jar executable je crée mon manifest avec la classe d'entrée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    try { Class.forName("com.mysql.jdbc.Driver");
    } catch (ClassNotFoundException classNotFoundException) {
    JOptionPane.showMessageDialog(null, "chargement extranet driver échoué");
    }
    faut il dire dans le .classpath du systeme comment acceder a ce driver qui est com.mysql.jdbc.Driver

    Et a l'execution du jar j'ai le message :chargement extranet driver échoué

    auriez vous une piste ?

  2. #2
    Membre du Club Avatar de KnowPart
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2010
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2010
    Messages : 78
    Points : 68
    Points
    68
    Par défaut création d'un jar executable - tutos svp ?
    Bonjour,

    Si tu travaille avec un IDE sorte netbeans ou eclipse,tu n'a qu'a chargé ton jar et ça marche très bien.

    Bonne journée

  3. #3
    Membre régulier Avatar de POKOU
    Homme Profil pro
    developpeur
    Inscrit en
    Décembre 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : developpeur

    Informations forums :
    Inscription : Décembre 2008
    Messages : 121
    Points : 101
    Points
    101
    Par défaut
    Bonjour

    je veux faire un jar executable qui peut fonctionner sur plusieurs pc qui n'ont pas eclipse.


  4. #4
    Expert confirmé
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Points : 4 539
    Points
    4 539
    Par défaut
    Salut,
    si tu n'arrive pas à intégrer le jar du pilote dans l'archive de l'application, tu peux utiliser le plug-in Fatjar pour éclipse

    http://fjep.sourceforge.net/

  5. #5
    Membre régulier Avatar de POKOU
    Homme Profil pro
    developpeur
    Inscrit en
    Décembre 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : developpeur

    Informations forums :
    Inscription : Décembre 2008
    Messages : 121
    Points : 101
    Points
    101
    Par défaut
    je suis sous WDSC

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Websphere Studio est basé sur Eclipse, tu n'as pas l'option Export -> Runnable Jar File ?

  7. #7
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Accessoirement c'est une mauvaise idée de modifier le classpath système. Celà peut amener à des conflits de versions de librairies assez gènants (un équivalent java du DLLHell)

    Le classpath est une notion qui est centrée sur une application et non un système. Il est donc de la responsabilité du développeur de produire un livrable contenant le jar principal de l'application et les jars dont dépend l'application avec une configuration locale, c'est à dire en utilisant l'entrée Class-Path du fichier MANIFEST.MF se trouvant dans le répertoire META-INF du jar contenant ta main class (aussi définie dans le MANIFEST.MF).

    Cf l'entrée suivante de la FAQ pour les explications sur les jars exécutables.
    http://java.developpez.com/faq/java/...on#creationJar

  8. #8
    Membre régulier Avatar de POKOU
    Homme Profil pro
    developpeur
    Inscrit en
    Décembre 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : developpeur

    Informations forums :
    Inscription : Décembre 2008
    Messages : 121
    Points : 101
    Points
    101
    Par défaut
    Bonjour
    Dans la FAQ il y a
    ...
    Pour créer le jar il faut déjà supprimer tous les .java
    L'idéal étant de copier tous les .class (avec leur arborescence s'ils sont packagés) dans un répertoire temporaire pour créer le jar dans ce répertoire. On peut aussi copier les fichiers qui seront accessibles dans le jar (images) s'il y en a.
    ...

    Qu'est ce qu'un .class avec son arborescence s'il est pacakagé ?


  9. #9
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Le résultat de la "compilation" d'un fichier.java -> fichier.class

    Le package étant physiquement une arborescence de répertoire, dans l'exemple : package mon.package.de.test;
    correspondrait à l'arborescence (disque)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    mon
    ...package
    ......de
    .........test
    ............1er fichier
    ............2ème fichier
    ............etc...

  10. #10
    Membre régulier Avatar de POKOU
    Homme Profil pro
    developpeur
    Inscrit en
    Décembre 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : developpeur

    Informations forums :
    Inscription : Décembre 2008
    Messages : 121
    Points : 101
    Points
    101
    Par défaut
    Bonjour

    pour obutterlin dans export je n'ai que:
    J2EE -> Fichier JAR de client d'application
    Java -> Fichier JAR
    Autres -> Fichier JAR distant

    et je sais pas lequel choisir

    Voici mon arborescence:
    - crearomeo
    …+ settings
    ...- bin
    …..+ crearomeo
    ………..- ici tous les .class
    …- META-INF
    ……MANIFEST.MF
    … - src
    …….+ crearomeo
    ………..- ici tous les .java et les .class (c'est WDSC qui me le remet automatiquement)
    …. - WebContent
    …….- WEB-INF
    ……..- lib
    …………..jt400.jar
    …………..mysql-connector-java-5.1.13-bin.java
    …………..NSI.jar ->ca c’est des trucs metier a nous
    …………..sdo_access_beans_6.1.0.jar
    …………..sdo_web_6.1.0.jar
    …x .classpath
    …x .project
    …x .wdo-connections
    … crearomeo.jar
    Voici mes fichiers:
    Le .classpath
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    <?xml version="1.0" encoding="UTF-8"?>
    <classpath>
    	<classpathentry exported="true" kind="con" path="ISERIES_TOOLBOX"/>
    	<classpathentry exported="true" kind="lib" path="WebContent/WEB-INF/lib/mysql-connector-java-5.1.13-bin.jar"/>
    	<classpathentry exported="true" kind="lib" path="WebContent/WEB-INF/lib/NSI.jar"/>
    	<classpathentry exported="true" kind="lib" path="WebContent/WEB-INF/lib/jt400.jar"/>
    	<classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
    	<classpathentry kind="src" path="">
    		<attributes>
    			<attribute name="org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY" value="crearomeo"/>
    		</attributes>
    	</classpathentry>
    	<classpathentry kind="output" path=""/>
    </classpath>
    Le .project
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    <?xml version="1.0" encoding="UTF-8"?>
    <projectDescription>
    	<name>crearomeo</name>
    	<comment></comment>
    	<projects>
    	</projects>
    	<buildSpec>
    		<buildCommand>
    			<name>org.eclipse.wst.common.project.facet.core.builder</name>
    			<arguments>
    			</arguments>
    		</buildCommand>
    		<buildCommand>
    			<name>org.eclipse.jdt.core.javabuilder</name>
    			<arguments>
    			</arguments>
    		</buildCommand>
    		<buildCommand>
    			<name>com.ibm.etools.webtools.sdo.jdbc.ui.sdoWebDeploy</name>
    			<arguments>
    			</arguments>
    		</buildCommand>
    		<buildCommand>
    			<name>org.eclipse.wst.validation.validationbuilder</name>
    			<arguments>
    			</arguments>
    		</buildCommand>
    	</buildSpec>
    	<natures>
    		<nature>org.eclipse.jdt.core.javanature</nature>
    		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
    	</natures>
    </projectDescription>
    Le MANIFEST.MF
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Manifest-Version: 1.0
    Created-By: 1.6.0_18 (Sun Microsystems Inc.)
    Main-Class: src.crearomeo.CreaRomeoActionPanel
    Class-Path: WebContent/WEB-INF/lib/mysql-connector-java-5.1.13-bin.jar ,
     WebContent/WEB-INF/lib/NSI.jar ,
     WebContent/WEB-INF/lib/jt400.jar
    A l’exécution
    X:\workspace2\crearomeo>dir
    Le volume dans le lecteur X s'appelle UTILISATEURS
    Le numéro de série du volume est 4CA9-F05A

    Répertoire de X:\workspace2\crearomeo

    03/01/2011 14:07 <REP> .
    03/01/2011 14:07 <REP> ..
    03/01/2011 13:56 751 .classpath
    30/12/2010 15:09 859 .project
    30/12/2010 16:32 <REP> .settings
    03/01/2011 11:39 133 .wdo-connections
    03/01/2011 14:06 <REP> bin
    03/01/2011 15:03 6 744 442 crearomeo.jar
    03/01/2011 14:32 1 196 crearomeo.jardesc
    28/12/2010 16:03 567 infos.txt
    29/12/2010 14:24 <REP> META-INF
    27/12/2010 14:58 <REP> src
    30/12/2010 15:09 <REP> WebContent
    6 fichier(s) 6 747 948 octets
    7 Rép(s) 1 073 524 736 octets libres

    X:\workspace2\crearomeo>java -jar crearomeo.jar
    java.sql.SQLException: No suitable driver found for jdbc:as400:CAVINFOR;prompt=f
    alse
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at src.crearomeo.CreaRomeoActionPanel$1.actionPerformed
    ...
    at java.awt.EventDispatchThread.run(Unknown Source)

    X:\workspace2\crearomeo>
    Et la JVM ne reconnait pas mes drivers qui sont dans un jar dans le dossier WebContent/WEB-INF/lib

    est ce que comme le dit Tschize ailleurs, dans l'entrée class-path dans le META-INF/MANIFEST.MF toutes les librairies dont dépend mon jar ne sont pas bien recensées?

    merci de vos reponses

  11. #11
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Je ne comprends pas trop ton cas mais ce qui me paraît sûr, c'est que les jar contenu dans le jar client ne peuvent pas être utilisés directement.
    Il faudrait les extraire sur le poste client et ensuite il seront reconnu grâce au class-path du manifest.mf.
    Personnellement, je génère ce qu'Eclipse appelle un "Runnable Jar File". Il s'occupe de "repackager" toutes les bibliothèques en un jar "exécutable".
    Si tu veux faire référence à des jar externes référencés sur le serveur distant, il faudrait peut-être regarder du côté de JNLP (Java Web Start).

  12. #12
    Membre régulier Avatar de POKOU
    Homme Profil pro
    developpeur
    Inscrit en
    Décembre 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : developpeur

    Informations forums :
    Inscription : Décembre 2008
    Messages : 121
    Points : 101
    Points
    101
    Par défaut
    Bonjour
    J'essaie de clarifier mon pbm:

    est-ce que les jars qui contiennent mes drivers peuvent être dans le jar exécutable:

    JVM.----------------------------------------------------------+
    I..contient:...........................................................I
    I.........................................................................I
    I......JAR.-------------------------------------------------+..I
    I..I.contient:.....................................................I..I
    I..I....-.MANIFEST.FR..........................................I..I
    I..I........-.Main.>-------renvoie.vers--------------+...I..I
    I..I........-.classpath.>----renvoie.vers.lib----+...I...I..I
    I..I.........................................................I...I....I..I
    I..I....-.lib.<--------------------------------------+...I...I..I
    i..I........-.JT400.jar........................................I...I..I
    I..I........-.mysql-connector-java-5.1.13-bin.jar....I...I..I
    I..I...............................................................I...I..I
    I..I....-.src.....................................................I...I..I
    I..I........-.monMain.java.<-------------------------+...I..I
    I..I........-.mesAutresClasses.java.........................I..I
    I..I...................................................................I..I
    I..+--------------------------------------------------------+..I
    I..........................................................................I
    +-----------------------------------------------------------+................

    ou est-ce que les jars qui contiennent mes drivers peuvent être dans un dossier à l'extérieur du jar exécutable:

    JVM.------------------------------------------------------------+
    I..contient:.............................................................I
    I...........................................................................I
    I...JAR.--------------------------------------------------+......I
    I..I.contient:....................................................I......I
    I..I....-.MANIFEST.FR.........................................I......I
    I..I........-.Main.>-------renvoie.vers--------------+..I......I
    I..I........-.classpath.>----renvoie.vers.lib--------------+..I
    I..I.............................................................I...I...I..I
    I..I....-.src...................................................I...I...I..I
    I..I........-.monMain.java.<------------------------+...I...I..I
    I..I........-.mesAutresClasses.java.......................I...I..I
    I..I.................................................................I...I..I
    I..+------------------------------------------------------+...I..I
    I........................................................................I..I
    I..-.lib.<----------------------------------------------------+..I
    i......-.JT400.jar.......................................................I
    I......-.mysql-connector-java-5.1.13-bin.jar..................I
    +---------------------------------------------------------------+

    autrement formulé: peut on avoir dans le MANIFEST.MF des classpath du type C:/dossier1/jar1 ?

  13. #13
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par POKOU Voir le message
    est-ce que les jars qui contiennent mes drivers peuvent être dans le jar exécutable:
    Non pas en standard... à moins d'utiliser des classloaders spécifiques comme OneJar par exemple.
    Citation Envoyé par POKOU Voir le message
    ou est-ce que les jars qui contiennent mes drivers peuvent être dans un dossier à l'extérieur du jar exécutable:
    Oui en standard les jar référencés dans le Class-Path du Manifest doivent être situé en dehors du jar, et référencé via un chemin relatif par rapport à ce dernier.

    Par exemple si tu as ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    TonApplication.jar
    lib/
        -> JT400.jar
        -> mysql-connector-java-5.1.13-bin.jar
    Tu dois avoir dans le manifest de ton fichier jar une ligne comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Class-Path: lib/JT400.jar lib/mysql-connector-java-5.1.13-bin.jar

    Citation Envoyé par POKOU Voir le message
    autrement formulé: peut on avoir dans le MANIFEST.MF des classpath du type C:/dossier1/jar1 ?
    Non uniquement des chemins relatifs. Les chemins absolu ne sont pas portable !!!

    a++

  14. #14
    Membre régulier Avatar de POKOU
    Homme Profil pro
    developpeur
    Inscrit en
    Décembre 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : developpeur

    Informations forums :
    Inscription : Décembre 2008
    Messages : 121
    Points : 101
    Points
    101
    Par défaut

    merci a tous :
    Quand à moi je copierai 5 fois : je ne dois pas mettre de virgule entre les jars dans le Class-Path: du MANIFEST.MF

    Pace e Salute

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Création d'un jar exécutable
    Par ralek dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 29/07/2010, 16h02
  2. Réponses: 26
    Dernier message: 29/06/2010, 16h35
  3. création d'un JAR exécutable
    Par Balbuzard dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 23/11/2008, 12h59
  4. Problème de création d'un jar exécutable
    Par zeero_cool dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 21/10/2008, 14h52
  5. Réponses: 4
    Dernier message: 02/10/2007, 15h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo