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 :

Utilisation d'un exe dans un jar avec dll


Sujet :

Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2015
    Messages : 30
    Points : 27
    Points
    27
    Par défaut Utilisation d'un exe dans un jar avec dll
    Bonjour,

    J'utilise dans mon programme un exécutable qui à besoin d'une dll pour fonctionner.
    L'exécutable sera intégré dans le jar de mon applu ainsi que la dll.

    Donc comme expliqué sur pas mal de post du forum, on ne peut pas utiliser un exe dans un jar il faut en faire une copie temporaire à un emplacement sur l'ordi et l'utiliser.
    Ce que je fais comme ceci.

    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
     
    public static final File openInternalFile(final String _resourcePath) throws IOException
    	{
    		// Creation du fichier temporaire
    		final File file = File.createTempFile("myprog", ".tmp");
    		file.deleteOnExit();
     
    		// Recuperation du flux de la ressource
    		final InputStream is = ResourceManager.class.getResourceAsStream(_resourcePath);
    		if (is == null)
    		{
    			return null;
    		}
     
    		// Ecriture dans le fichier tmp
    		StreamUtils.streamToFile(is, file);
    		return file;
    	}
    J'utilise le même principe pour charger la dll, sauf que le nom doit rester malib.dll.
    Tout fonctionne, mais je me demande si il n'existe pas un moyen de ne pas charger séparément l'exécutable et la dll.

    L’exécutable m'est fourni par une ressource extérieure mais la compilation statique me semble être la meilleure option.

    Si il m'est impossible de récupérer un exe compilé en -static y a-t-il une solution alternative?

  2. #2
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Oui, si tu as la possibilité de compiler ton exe de maniere statique, ca te permettrait de t'affranchir de ton dll. Mais ce n'est pas toujours possible puisque ca suppose que tu disposes de la librairie de ton dll compilée statiquement.
    Mais sans savoir quelle lib, c'est difficile à dire si ca existe.

    Je ne sais pas vraiment quel est le probleme avec le fait de devoir recuperer 2 fichiers mais si tu tiens absolument à en avoir qu'un, tu peux zipper exe+dll pour avoir un seul fichier. Mais ca imposera de dezipper avant de lancer ton exe et de supprimer exe + dll à la main (d'après ton code, tu sembles vouloir les supprimer).

    Note qu'en utilisant un exe, tu perds le multi plateforme de java. L'exe fait quelque chose de compliqué ?

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2015
    Messages : 30
    Points : 27
    Points
    27
    Par défaut
    Salut hoarang merci de ta réponse. Ta maîtrise du java égale-t-elle celle du taekwondo?

    Je n'ai pas considéré que c'était un problème de charger 2 fichiers, je voulais juste savoir si il y avait un moyen de rendre ça plus... "automatique". Et comment je le ferai si je devais charger 1000 dll (par exp).
    J'aime bien le principe du zip.
    Mais d'une manière ou d'une autre il faut soit tout charger ou tout supprimer "à la main".

    L'exécutable est fourni par un client. Il fait des trucs compliqués effectivement. il fait des calcule génère des fichiers et d'autres trucs (Mais si je te donne des infos je serais obligé de t'éliminer).
    On a déjà invoqué la possibilité d'une version linux mais ça n'est pas possible à l'heure actuelle pour pleins d'autres raisons.

    Allez hop résolu

    merci

  4. #4
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Citation Envoyé par Dia972 Voir le message
    Ta maîtrise du java égale-t-elle celle du taekwondo?
    Elle est bien supérieure. Seule ma maitrise de mangeage de pizza peut surpasser ma maitrise de java

    Citation Envoyé par Dia972 Voir le message
    Je n'ai pas considéré que c'était un problème de charger 2 fichiers, je voulais juste savoir si il y avait un moyen de rendre ça plus... "automatique". Et comment je le ferai si je devais charger 1000 dll (par exp).
    1000 dlls, j'aimerais bien voir le programme que tu pondras qui fait ca

    Citation Envoyé par Dia972 Voir le message
    J'aime bien le principe du zip
    Bah franchement, moi, je trouvais pas ca terrible (surtout la gestion à la main de l'effacement). Mais bon, content que ca te plaise. Remarque que tu peux aussi le decompresser via l'API java, lister les fichiers et appeler deleteOnExit pour les effacer. Mais bon, ca limite quand meme beaucoup l'interet de ne pas les embarquer directement dans le jar.

    Citation Envoyé par Dia972 Voir le message
    Mais d'une manière ou d'une autre il faut soit tout charger ou tout supprimer "à la main".
    Bah si ce qui te gene, c'est de devoir maintenir une liste des fichiers à extraire, tu peux aussi les mettre dans un repertoire particulier dans l'arborescence de ton jar et tous les extraire. Comme ca, tu gardes ton code à peu pres generique et tu ne te prends pas la tete à supprimer le tout à la main.

    Citation Envoyé par Dia972 Voir le message
    L'exécutable est fourni par un client
    Bah le plus simple, s'il le peut, c'est de te fournir un fichier sans dll. Mais bon, ca ne résoudrait pas ta question méta-physique de savoir comment gérer l'extraction de plusieurs fichiers de ton jar.

    Citation Envoyé par Dia972 Voir le message
    Mais si je te donne des infos je serais obligé de t'éliminer
    Tu peux toujours essayer. Mais gare à mes pieds !!

  5. #5
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Ce que je fais dans mon cas : mon JAR contient un ZIP qui lui contient tous les requis (exe + 1-4 DLLs suivant les versions). Pour lancer l'exe embarqué, je créer un répertoire temporaire et je dézippe tout dedans en itérant sur les entry du fichier zip (voir java.uti.zip) sans chercher à réfléchir. Ensuite on lance l'exe (le seul présent dans l'archive) en prenant soit de bien spécifier l’enveloppe du processus quand à l'endroit d’où on l’exécute.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

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

Discussions similaires

  1. utilisation d'un exe dans ressources
    Par philippe123 dans le forum VB.NET
    Réponses: 1
    Dernier message: 17/06/2008, 09h37
  2. Réponses: 1
    Dernier message: 18/09/2007, 10h41
  3. inclure des resources dans le jar avec build-impl.xml
    Par broumbroum dans le forum NetBeans
    Réponses: 2
    Dernier message: 08/01/2007, 15h24
  4. [JNI]Execution d'une dll dans un jar avec package
    Par osopardo dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 01/09/2006, 11h50
  5. Réponses: 6
    Dernier message: 29/07/2005, 11h12

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