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

Eclipse Java Discussion :

Export jar avec dépendances


Sujet :

Eclipse Java

  1. #1
    Membre éclairé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Par défaut Export jar avec dépendances
    Bonjour,

    J'ai un problème d'export jar de mon application.

    En fait, j'ai deux projets sous Eclipse, l'un orienté IHM (Projet 1) et l'autre étant plutôt le cœur (Projet 2), ainsi j'ai une dépendance du projet IHM vis-à-vis du second projet.

    Ainsi, dans le build path du Projet 1 j'ai ajouté le Projet 2 et tout fonctionne bien à l’exécution dans Eclipse.

    Par contre lorsque j'exporte en jar, l’application se lance mais des images n'apparaissent pas et des actions liées à l'IHM ne s’exécutent pas.

    Je précise que j'exporte avec Eclipse en cochant bien les deux projets.
    Y aurait-il une option que j'aurais oublié ou une autre solution simple?

    Merci de votre aide.

  2. #2
    Membre Expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Par défaut
    Salut,

    À mon avis, le plus simple pour toi reste de regarder cette Q/R dans la FAQ.
    Sinon, tu as peut-être un autre problème. Dans ce cas là, exécutes ton application à partir de la ligne de commande:
    java -jar myJar.jar (tu auras au moins les exceptions).

    Voilà, à+
    Gueritarish

  3. #3
    Membre éclairé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Par défaut
    Merci du conseil, grâce à toi je me suis aperçu qu'une dll (générée par du code C++) n'est pas trouvée lors de l’exécution.
    Pourtant lors de l’exécution dans Eclipse il n'y a pas de problème, sachant qu'elle se trouve dans l'arborescence du projet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Projet/
       |__classes/
       |__dll/ (où se trouve la dll)
       |__icon/
       |__images/
       |__libs/ (.jar externes)
       |__src/
       |__ ...

  4. #4
    Membre Expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Par défaut
    Salut,

    À mon avis, à l'exécution, il te faut ajouter l'option -Djava.library.path=mon/chemin/vers/ma/dll, ça te donnerait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java -Djava.library.path=mon/chemin/vers/ma/dll -jar myJar.jar
    Voilà, à+
    Gueritarish

  5. #5
    Membre éclairé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Par défaut
    J'ai essayé mais ça marche pas.
    En fait c'est plus compliqué que cela.
    Mon projet utilise une interface JNI dans laquelle se trouve la dll.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Projet/
       |__classes/
       |__icon/
       |__images/
       |__jni/ (où se trouve la dll)
       |__libs/ (.jar externes)
       |__src/
       |__ ...

  6. #6
    Membre Expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Par défaut
    Si ça fonctionne correctement dans Eclipse, je te conseille fortement de faire un "Export Runnable JAR". Tu te prendras beaucoup moins la tête...

  7. #7
    Membre éclairé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Par défaut
    J'ai essayé les deux "Export jar file" et "Export runnable jar" en testant les différentes options, mais le resultat est le même.
    Il n'y a que dans eclipse que l'application s’exécute normalement.

  8. #8
    Membre éclairé
    Inscrit en
    Juillet 2012
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juillet 2012
    Messages : 32
    Par défaut
    Bonjour,

    interface JNI dans laquelle se trouve la dll
    ta dll est dans un répertoire de ton projet, comment est ce que tu spécifies au lancement de ton programme où la jvm doit aller la chercher?
    Tu as sûrement un argument de la jvm dans la configuration de lancement de ton progralmme.

    Sinon c'est un simple projet java ou est ce que tu as créé un autre type de projet? Ou encore un projet java auquel tu aurais ajouté une nature?

  9. #9
    Membre éclairé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Par défaut
    C'est un simple projet Java, je sais pas si il est d'une nature particulière car je récupère tout(les projets et le code) dans l'état.

  10. #10
    Membre éclairé
    Inscrit en
    Juillet 2012
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juillet 2012
    Messages : 32
    Par défaut
    Tu peux appeler ce bout de code au lancement de ton programme, je l'ai déjà vu dans un jar qui utilise une lib native :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    //créer un fichier temporaire qui contiendra la dll
    File tempFile = File.createTempFile(...);
     
    //écrire la dll dans le fichier temporaire
    //la dll originale est récupérée dans le jar
    InputStream input = MainClass.class.getResourceAsStream("dllPath"); 
    FileOutputStream fileOutputStream = new FileOutputStream(tempFile);
    copyToFile(input, tempFile);
     
    //rendre la dll disponible pour la jvm
    System.load(tempFile.getAbsolutePath()); 
     
    //supprimer la dll temporaire quand la programme est arrêté
    tempFile.deleteOnExit();

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/05/2014, 11h12
  2. Réponses: 18
    Dernier message: 29/05/2012, 09h10
  3. Problème exportation JAR avec images
    Par oliwan dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 22/06/2009, 20h08
  4. Exporter jar avec JOGL
    Par goast dans le forum 3D
    Réponses: 0
    Dernier message: 22/10/2008, 07h29
  5. Exportation .JAR avec lib externe
    Par bobo21 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 25/02/2007, 18h43

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