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 :

Changer une variable d'environnement


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 9
    Par défaut Changer une variable d'environnement
    Bonjour,

    Je travaille sur une application qui génère des docx. Elle fonctionne parfaitement sur le serveur de développement. Le problème c'est que cela ne marche absolument pas sur le serveur en production au niveau des caractères accentués (le docx refuse de s'ouvrir). Tout ça a cause d'une petite variable d'environnement : LANG=fr_FR au lieu de LANG=fr_FR.UTF-8 (Vérifié en lançant mon application dans un telnet en changeant la variable d'environnement pour la session)

    Ne pouvant pas changer cette variable sur le serveur de production, j'aimerais dans mon application la "changer".

    J'ai essayé :
    String cmd = "set LANG=fr_FR.UTF-8 ; export LANG";
    Runtime run = Runtime.getRuntime();
    run.exec(cmd);
    Mais j'ai une erreur "not found"

    Puis :
    System.setProperty("LANG","fr_FR.UTF-8") ;
    Qui ne fait pas d'erreur mais qui ne change rien : l'application n'est toujours pas fonctionnelle.

    Alors j'aimerais savoir si quelqu'un a une petite idée pour me sortir de mon problème :euh:
    Merci d'avance.

  2. #2
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Salut,

    Tu ne peux pas changer une variable d'environnement au sein de ton programme.


    Citation Envoyé par grignette Voir le message
    J'ai essayé :
    String cmd = "set LANG=fr_FR.UTF-8 ; export LANG";
    Runtime run = Runtime.getRuntime();
    run.exec(cmd);
    Mais j'ai une erreur "not found"
    Deux remarques :
    • Runtime.exec() lance un nouveau processus séparé, qui n'aura aucun impact sur ton processus...
    • set est une commande interne du shell, qui ne peut pas être appelée directement par Runtime.exec() (il faudrait appeler le shell système)


    Citation Envoyé par grignette Voir le message
    System.setProperty("LANG","fr_FR.UTF-8") ;
    Qui ne fait pas d'erreur mais qui ne change rien : l'application n'est toujours pas fonctionnelle.
    Les propriétés Java ne correspondent pas aux variables d'environnements (même si certaines peuvent être lié).


    Dans ton cas je suppose qu'il s'agit de la propriété Java "file.encoding"... mais il veut mieux éviter de la modifier.

    A la place il serait plutôt préférable de définir l'encodage dans ton code, lorsque tu génères ton fichier.


    a++

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 9
    Par défaut
    Tout d'abord, merci de m'avoir répondu.

    Citation Envoyé par adiGuba Voir le message
    A la place il serait plutôt préférable de définir l'encodage dans ton code, lorsque tu génères ton fichier.
    J'ai déjà essayé cette solution et cela ne change rien à mon problème. J'avais fait ceci dans une première version de mon programme :

    OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(urlDoc),"UTF-8");

    Et ceci avec une deuxième version utilisant la librairie vélocity :

    template = engine.getTemplate(templateURL, "UTF-8");

    Comment procéder pour appeler le shell système ? Enfin si c'est possible... Faut il utiliser une librairie ou bien il existe déjà des commandes java ?

  4. #4
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par grignette Voir le message
    J'ai déjà essayé cette solution et cela ne change rien à mon problème.
    Cela signifie surement que tu doit spécifier l'encodage également autre part...

    Citation Envoyé par grignette Voir le message
    Comment procéder pour appeler le shell système ? Enfin si c'est possible... Faut il utiliser une librairie ou bien il existe déjà des commandes java ?
    Heu... Tu n'as pas tout lu : cela ne servirait à rien puisque cela changerait l'encodage du nouveau processus... mais pas du tiens !



    Soit tu défini la propriété système "file.encoding" (mais c'est pas top), soit tu défini correctement l'encodage partout où il le faut...


    a++

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 9
    Par défaut
    OK. Je vais voir ce que je peux faire en fonction de tes réponses.
    Merci pour ces éclaircissements.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 9
    Par défaut
    J'ai finalement trouvé une toute autre solution :

    J'ai créé un .sh avec ceci :

    #!/bin/bash
    export LANG="fr_FR.UTF-8"
    echo $LANG


    Dans mon programme je fais ceci :

    String cmd = "sh /../changeLang.sh";
    Runtime run = Runtime.getRuntime();
    run.exec(cmd);


    Et c'est bingo !

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

Discussions similaires

  1. changer une variable d'environnement a partir d'un script
    Par doomxl dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 28/06/2007, 13h08
  2. [C#] Récupération d'une variable d'environnement
    Par jamy79 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 17/08/2005, 14h03
  3. NASM Tester une variable d'environnement à la "compilat
    Par Pierre Maurette dans le forum Assembleur
    Réponses: 1
    Dernier message: 10/06/2005, 13h27
  4. [BES] Création d'une variable d'environnement
    Par NGI80 dans le forum Autres
    Réponses: 2
    Dernier message: 17/10/2002, 07h31

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