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

Langage Java Discussion :

Variable d'environnement & setProperty


Sujet :

Langage Java

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 40
    Points : 21
    Points
    21
    Par défaut Variable d'environnement & setProperty
    Bonjour,

    J'ai un petit souci avec les variables d'environnement sous Windows.

    J'ai lu la FAQ mais je n'ai pas trouvé réponse à mon problème.

    Je souhaite tout "simplement" mettre à jour la variable d'environnement Path :
    Je fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    String libpath = System.getProperty("java.library.path");
    libpath = libpath + ";titi";
    System.setProperty("java.library.path", libpath);
    Cependant ma variable d'environnement n'est pas mise à jour.

    Des avis sur la question ?

    Cordialement,
    Nicolas

  2. #2
    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
    Salut,


    Les System.getProperty() et System.setProperty() ne correspondent pas aux variables d'environnements du système, mais à des propriétés du programme Java...


    De plus, lorsqu'on change les variables d'environnements d'un programme, cela ne se répercutent que dans les processus fils (chose qu'il faut faire explicitement en Java).


    Pour modifier des variables d'environnements systèmes, il faut passer par du code natif et des fonctions spécifique de l'OS hôte (et encore je ne suis pas sûr que ce soit possible).


    Pourquoi as-tu besoin de modifier cela ?

    a++

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 40
    Points : 21
    Points
    21
    Par défaut
    Merci pour ta réponse.

    J'ai besoin de cela car dans mon Applet j'ai besoin de charger une série de dll (alors que sous linux je n'en ai besoin que d'une ).

    Si je n'ajoute pas mon dossier à la variable d'environnement path, il m'indique qu'il ne trouve pas une dll. (cf http://www.java-forum.org/allgemeine...zugreifen.html).

    Sais tu comment je peux arranger cela ?

    Nicolas

  4. #4
    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
    Ok : donc c'est bien les propriété java que tu veux changer...

    Le problème c'est qu'il y a de forte chance que la valeur soit lu avant que tu ne la change.



    Si tu connais le chemin d'installation de cette librairie, tu peux peut-être remplacer System.loadLibrary() par System.load(). Ce dernier à l'avantage d'attendre un chemin de fichier complet (par contre c'est OS-spécifique mais je pense que tu dois déjà gérer cela)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String path = "C:\\titi\\";
    // System.loadLibrary("nspr4");
    System.load( path + "nspr4.dll" );

    a++

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 40
    Points : 21
    Points
    21
    Par défaut
    Effectivement, je gère l'OS.

    J'obtiens l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UnsatisfiedLinkError: no jss4 in java.library.path
    pourtant jss4.dll fait partie des dll que je charge

    As-tu une idée ?

    Nicolas

  6. #6
    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
    En la chargeant avec System.load() ou System.loadLibrary() ?

    a++

  7. #7
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 40
    Points : 21
    Points
    21
    Par défaut
    Je la charge avec System.load().

    Avec des recherches google correspondant à mon exception, je tombe là-dessus :
    http://www.mail-archive.com/dev-tech.../msg01601.html

    Ici le gars dit que ça a fonctionné dès lors qu'il a ajouté le dossier de DLL à la variable d'environnement path

    Nicolas

  8. #8
    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
    Il parle de loadLibrary() !

    Tu utilises bien le chemin complet vers le fichier avec load() ???
    Vérifie toujours que tu n'ai pas fait d'erreur de saisie (avec une new File(x).exists() par exemple)

    a++

  9. #9
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 40
    Points : 21
    Points
    21
    Par défaut
    Effectivement, autant pour moi.

    J'ai vérifié, tous mes liens sont bons.

    J'ai refait à nouveau l'essai :
    - Je fais un System.load de toutes mes DLL, j'obtiens l'exception ;
    - J'ajoute mon dossier de DLL en variable environnement (je ne fais donc pas de System.load) et là ça fonctionne.

    Ca me laisse perplexe.

    Nicolas

  10. #10
    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
    Tu as le stacktrace complet ?
    Ce jss4 est directement chargé par ton code ou par une librairie tierce que tu ne maitrise pas ?

    a++

  11. #11
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 40
    Points : 21
    Points
    21
    Par défaut
    jss4.dll fait partie des librairies que j'importe.

    Voici le stacktrace ;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    java.lang.UnsatisfiedLinkError: no jss4 in java.library.path
    	at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1709)
    	at java.lang.Runtime.loadLibrary0(Runtime.java:823)
    	at java.lang.System.loadLibrary(System.java:1028)
    	at org.mozilla.jss.CryptoManager.loadNativeLibraries(CryptoManager.java:1339)
    	at org.mozilla.jss.CryptoManager.initialize(CryptoManager.java:827)
    	at org.pandora.gateway.sl.sso.proxy.GridProxyHandlerApplet.getCertsFromMozilla_WindowsPlatform(GridProxyHandlerApplet.java:1616)
    	at org.pandora.gateway.sl.sso.proxy.GridProxyHandlerApplet.init(GridProxyHandlerApplet.java:208)
    	at sun.applet.AppletPanel.run(AppletPanel.java:424)
    	at java.lang.Thread.run(Thread.java:619)

    Nicolas

  12. #12
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	at java.lang.System.loadLibrary(System.java:1028)
    	at org.mozilla.jss.CryptoManager.loadNativeLibraries(CryptoManager.java:1339)
    Donc cela plante dans le code de la librairie et non pas dans ton code, car System.loadLibrary() est exécuté dans tout les cas...


    Donc la librairie devra obligatoirement se trouver dans le "java.library.path"... mais je ne sais pas comment modifier cela pour une applet !!

    a++

  13. #13
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 40
    Points : 21
    Points
    21
    Par défaut
    Merci pour ton aide.

    Je pensais lancer un fichier .bat pour mettre à jour la variable d'environnement Path.

    Est-ce jouable ?

    Nicolas

  14. #14
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 40
    Points : 21
    Points
    21
    Par défaut
    Une chose :

    En mettant les dll dans windows -> system32 ça fonctionne ...

    Mais c'est pas très propre ...

    Nicolas

  15. #15
    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 Nicolas74100 Voir le message
    Je pensais lancer un fichier .bat pour mettre à jour la variable d'environnement Path.
    Heu... ca me parait quand même compliquer. Je ne sais même pas si on peut facilement changer les variables d'environnements systèmes...

    Maintenant je ne maitrise pas vraiment le mécanisme de chargement des applets...

    a++

  16. #16
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 40
    Points : 21
    Points
    21
    Par défaut
    J'ai trouvé la solution.

    J'ajoute (grâce à la FAQ developpez.com ) mon dossier contenant mes dll au java.library.path :
    J'utilise addToJavaLibraryPath et resetJavaLibraryPath.

    URL : http://java.developpez.com/faq/java/?page=langage_jni



    Merci pour ton aide,

    Cordialement
    Nicolas

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

Discussions similaires

  1. [langage] Création de variable d'environnements
    Par Smaugg dans le forum Langage
    Réponses: 20
    Dernier message: 26/04/2004, 09h32
  2. [BES] Création d'une variable d'environnement
    Par NGI80 dans le forum Autres
    Réponses: 2
    Dernier message: 17/10/2002, 07h31
  3. nom de fichier et variables d'environnement
    Par joebarthib dans le forum Langage
    Réponses: 2
    Dernier message: 18/07/2002, 15h21
  4. Réponses: 4
    Dernier message: 18/07/2002, 13h32

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