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 :

lancer un jar avec librairie en argument ne fonctionne pas à partir d'un script


Sujet :

Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 293
    Points : 96
    Points
    96
    Par défaut lancer un jar avec librairie en argument ne fonctionne pas à partir d'un script
    Bonjour,

    A partir d'Eclipse j'ai ajouté le jacob.jar comme external jar.
    Mon programme doit créer des mails Outlook.
    Sous eclipse mon programme crée bien le mail Outlook.
    Je génère un archive jar pour utiliser mon programme n'importe.
    A partir d'une ligne de commande, je lance avec java.exe le programme jar et il crée bien le mail.
    Cependant, lorsque j'insère la commande dans un autre script (dans une AppV de Windows) et que je rajoute la librairie à la commande tel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java.exe -Djava.library.path=%PackageDir%\\AppTest\\jacob-1.19-x64.dll -jar %PackageDir%\\AppTest\\Test.jar
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java.exe -jar %PackageDir%\\AppTest\\Test.jar
    il donne l'erreur qu'il ne peut pas créer l'objet Outlook.
    Par contre, en ligne de commande (cmd) et parce que j'ai ajoute la librairie dans le répertoire de java (PATH), je n'ai pas de problème sans ajouter la libraire en ligne de commande tel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cmd : java.exe -jar %PackageDir%\\AppTest\\Test.jar
    Le but est quand même de ne pas ajouter la librairie dans le répertoire d'installation du JRE et de l'ajoute en ligne de commande avec -Djava.library.path

    Merci pour vos éclaircissement

    cpf

  2. #2
    Membre averti
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mai 2020
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mai 2020
    Messages : 325
    Points : 436
    Points
    436
    Par défaut
    Bonour,

    Je ne pense pas que java.exe sache interpréter le %PackageDir%, il vous faut lui donner un chemin relatif ou absolu. Je ne connais pas non plus ce paramètre java.library.path mais plutôt l'argument -cp:

    -cp <class search path of directories and zip/jar files>
    -classpath <class search path of directories and zip/jar files>
    --class-path <class search path of directories and zip/jar files>
    A : separated list of directories, JAR archives,
    and ZIP archives to search for class files.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 293
    Points : 96
    Points
    96
    Par défaut
    merci pour la réponse.
    Je m'attendais à cette réflexion.
    le packagedir est une variable system connue uniquement dans AppV dans un package dédié à l'application.
    Quand j'affiche avec un script vbs la commande, on voit qu'il a bien interprété la variable.
    Le problème vient d'ailleurs, càd à partir de n'importe où dans Windows et sans le -D en plus, la librairie est trouvée car elle se trouve dans le répertoire de JRE. Le fait est qu'à partir de AppV, il ne va pas chercher dans le répertoire d'installation du JRE et même quand j'ajoute en dur dans "-Djava.library.path" le chemin jusqu'à la librairie, la commande ne prend pas en compte la librairie.
    Je pense que la solution devrait se trouver dans le poste :https://www.developpez.net/forums/d1.../#post11625780
    vers la fin en créant un librairie personnelle ... mais je ne vois comment il crée cette librairie
    extrait du post en question :
    "Pour ce faire, j'ai créé une librairie (add library/User Library que j'ai nommé JACOB Library). Lors de la création, ne cochez pas "System library"!!!! mon problème venait de là.
    J'ai ensuite ajouté mon jar en faisant "Add JARs..."

    Je reviens dans JACOB Library, je retrouve mon jacob.jar. Je décompose mon fichier jar (petit triangle à gauche du nom) et dans Native library location, j'ai ajouté l'endroit où se trouvait mon dll (jacob-1.18-x64.dll)
    "

  4. #4
    Membre averti
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mai 2020
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mai 2020
    Messages : 325
    Points : 436
    Points
    436
    Par défaut
    Ha, excusez moi.
    Je n'avais pas compris qu'il s’agissait d'un librairie avec une dépendance native (DLL). Il y à bien longtemps que je n'ai plus joué avec ce genre de choses mais il me semble qu'a l'époque on utilisait des blocs statiques pour cehrcher la DLL et ajouter le chemin via System.setProperty


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    static {
      File dll = // Scan du répartoire courant et/ou d'autres emplacements possibles 
      System.setProperty("java.library.path", dll.getParent().getAbsolutePath());
    }

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 293
    Points : 96
    Points
    96
    Par défaut
    merci pour la réponse,
    Où injectes-tu ce code et à quel moment ?

    Merci

    cpf

  6. #6
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    Citation Envoyé par gervais.b Voir le message
    Ha, excusez moi.
    Je n'avais pas compris qu'il s’agissait d'un librairie avec une dépendance native (DLL). Il y à bien longtemps que je n'ai plus joué avec ce genre de choses mais il me semble qu'a l'époque on utilisait des blocs statiques pour cehrcher la DLL et ajouter le chemin via System.setProperty


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    static {
      File dll = // Scan du répartoire courant et/ou d'autres emplacements possibles 
      System.setProperty("java.library.path", dll.getParent().getAbsolutePath());
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -Djava.library.path="madll.dll"
    est une autre manière de faire.

    Ceci est censé marcher aussi : (a mettre par exemple dans la classe ou tu as le main)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.load("madll.dll");
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 293
    Points : 96
    Points
    96
    Par défaut
    le problème ne venait de la manière de la java mais des restrictions liés aux APPV de Windows.
    Pour la librairie "Jacob.jar", il suffit de la placer dans le même répertoire que le jar à lancer et puis la commande normale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java.exe -jar %PackageDir%\\AppTest\\Test.jar
    ça fonctionne très bien !

    Merci

    cpf

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

Discussions similaires

  1. Fonction avec tableau en argument ne fonctionne pas
    Par Ecko- dans le forum Arduino
    Réponses: 11
    Dernier message: 18/09/2018, 18h52
  2. Lancer un .jar avec argument
    Par Geoffrey49000 dans le forum Général Java
    Réponses: 2
    Dernier message: 22/07/2011, 21h23
  3. probleme jar avec librairie externe
    Par pitbul44 dans le forum JBuilder
    Réponses: 2
    Dernier message: 07/01/2007, 12h09
  4. lancer un jar avec Eclipse
    Par mj.air dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 05/10/2006, 16h55
  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