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

Java Discussion :

JAR et librairies natives


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1
    Par défaut JAR et librairies natives
    Bonjour à tous,

    J'ai développé un petit projet en java3d sous Eclipse, et je souhaite pouvoir en faire un JAR exécutable.

    Cependant pour le faire tourner, java3d nécessite 3 librairies externes (des fichiers JAR), que j'arrive à intégrer dans le JAR (c'est une option dans Eclipse pour créer un JAR exécutable).
    Par contre il requiert aussi 2 librairies natives (sous Linux des fichiers .so, sous Windows des .dll), et celles-ci je n'arrive pas à les intégrer au JAR et à lui faire comprendre de les charger.

    J'ai essayé d'utiliser JarClassLoader sans succès (il me fait une erreur : invalid ELF header), j'ai entendu parler d'un header Bundle-NativeCode dans le MANIFEST.MF mais je n'arrive pas à comprendre comment ça marche. Enfin je sais que l'on peut charger des librairies natives via System.loadLibrary() mais avant cela il faut les extraire du JAR dans les fichiers temporaires, et là je suis un peu perdu...

    Si quelqu'un connait un moyen simple d'inclure des librairies natives dans un JAR (ou une solution alternative qui me permette de pouvoir distribuer mon projet en un seul fichier exécutable) ça m'aiderait beaucoup !

    Merci d'avance.

    Julien

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 60
    Par défaut FatJar
    Il existe un plugin eclipse qui simplifie la vie pour créer des jars, FatJar.
    http://fjep.sourceforge.net/

  3. #3
    Invité
    Invité(e)
    Par défaut
    Salut,

    Citation Envoyé par Arkandias07 Voir le message
    J'ai essayé d'utiliser JarClassLoader sans succès (il me fait une erreur : invalid ELF header),
    Ce message semble indiquer que ton fichier .so n'est pas correct. ELF est le format binaire utilisé pour les exécutables et les bibliothèque sous systèmes Unix. Es-tu sûr de ton fichier .so ? As tu une meilleure stacktrace et du code ?

    Citation Envoyé par Arkandias07 Voir le message
    j'ai entendu parler d'un header Bundle-NativeCode dans le MANIFEST.MF mais je n'arrive pas à comprendre comment ça marche.
    Ça c'est uniquement dans un environnement OSGi!

    Citation Envoyé par Arkandias07 Voir le message
    Enfin je sais que l'on peut charger des librairies natives via System.loadLibrary() mais avant cela il faut les extraire du JAR dans les fichiers temporaires, et là je suis un peu perdu...
    System.loadLibrary() va chercher ta bibliothèque native dans le répertoire par défaut des .dll sous windows (genre surement un truc system32 si je suis pas trop rouillé) ou des .so sous unix (/usr/lib ou /usr/lib64 suivant ton architecture). Tu peux aussi indiquer ce chemin lors du lancement de la JVM avec l'option : -Djava.library.path, ou (ce que je déconseille) utiliser la variable d'environnement LD_LIBRARY_PATH sous systèmes Unix.
    Il existe aussi System.load() qui permet de charger une bibliothèque native non pas par son nom, mais en donnant le chemin complet du fichier. Tu pourrais donc extraire tes .so ou .dll dans un répertoire connu de toi et les charger ensuite via cette méthode.

    Ceci dit ton message d'erreur semble me dire que le .so a un problème. As-tu cette exception aussi avec les dll ?

    EDIT: Ach, je me suis fait avoir par un post qui remonte, ça m'apprendra à ne regarder que la date de la dernière réponse

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par George7 Voir le message
    EDIT: Ach, je me suis fait avoir par un post qui remonte, ça m'apprendra à ne regarder que la date de la dernière réponse
    1 mois, ça va, me suis déjà fait avoir sur des messages remontés vieux de deux ans, il y a des gens qui sortent les pelles quand il vont sur le forum, je pense

Discussions similaires

  1. Exécuter un jar avec les librairies natives de JMonkeyEngine
    Par fredu dans le forum Général Java
    Réponses: 0
    Dernier message: 25/08/2009, 12h51
  2. chargement de librairies natives
    Par eclesia dans le forum NetBeans
    Réponses: 10
    Dernier message: 31/01/2007, 13h16
  3. probleme jar avec librairie externe
    Par pitbul44 dans le forum JBuilder
    Réponses: 2
    Dernier message: 07/01/2007, 12h09
  4. faire un zip grace aux librairies natives de windows
    Par soulryo dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 30/11/2006, 10h13
  5. [POI]Exportation de Jar avec librairies
    Par leminipouce dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 26/10/2005, 18h20

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