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

Entrée/Sortie Java Discussion :

Caractères spéciaux dans un chemin


Sujet :

Entrée/Sortie Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10
    Par défaut Caractères spéciaux dans un chemin
    Bonjour,

    Je récupère le chemin vers le dossier de mon programme avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String file = getClass().getProtectionDomain().getCodeSource().getLocation().getFile();
    Ca marche très bien, sauf qu'il traite les caractères spéciaux.
    Exemple :

    DEBUG : Dossier execution = Z:\My%20Dropbox\AL2C\03.%20Projet\Executable%20s%c3%
    a9quence\SequenceTest_1.0
    Ce format m'oblige à utiliser Java.net.URL pour ouvrir un fichier, mais impossible d'exécuter d'autres programmes avec ce format de chemin avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java -jar [mon_chemin]/fichier.jar
    Comment je pourrai transformer ces %XX ?

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10
    Par défaut
    J'avance, j'ai trouvé la classe URLDecoder qui effectue ce que je demande.

    Problème : les accents sont encodés en UTF-8, cela fonctionne sous Windows mais Linux & MacOSX ne supportent pas les répertoires avec accent issus de URLDecoder.decode(...).

    J'ai testé avec de nombreux charset, rien en passe dans mon runtime.exec("java -jar [rep]/fichier.jar");

    Après de nombreuses recherches sous google, mon cas n'est pas totalement isolé et aucune solution n'est donnée.

    Existe t-il un moyen d'exécuter des .JAR externes à l'application, dans le répertoire de l'application, avec des accents ?
    Je cherche encore la solution .. !

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10
    Par défaut
    Je donne un élément de réponse pour ceux que ça intéresse :

    Les accents dans le runtime.exec() ne fonctionnent pas (sous Linux & Mac en tout cas), ni même les espaces !

    Solution :
    - runtime.exec("[commande]", null, new File(repertoire_avec_accent));
    - Pas d'accents/espaces dans la commande
    - TOUJOURS utiliser ./rep/fichier (sans le ./ ça marche pas) pour utiliser un fichier (c'est ce qui m'a le + étonné ..).

    Pas top niveau interopérabilité mais en bidouillant on y arrive .. presque ! ^^.

  4. #4
    Membre très actif Avatar de unknow0
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 452
    Par défaut
    et avec runtime.exec(string[])?
    la en l'occurrence runtime.exec(new String[] {"java", "-jar", fichier})

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10
    Par défaut
    En effet, cela fonctionne très bien en passant un tableau de String.

    D'ailleurs, Apple le rappelle très bien sur son site dans un guide de développement Java pour Mac OS X :
    When calling the Runtime.exec() method, be sure to call Runtime.exec(String[] cmdarray) or one of its counterparts, instead of the single-string version (Runtime.exec(String command)). Passing a string outside of an array can have unpredictable results. Runtime.exec(String[] cmdarray) behaves as it does in a standard Unix environment.
    Bon à savoir

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

Discussions similaires

  1. [Batch] Caractères spéciaux (©) dans le chemin des fichiers lors d'un script copy
    Par SylvainM dans le forum Scripts/Batch
    Réponses: 7
    Dernier message: 02/09/2014, 16h48
  2. [VBA] Probleme de caractères spéciaux dans nom de classeur
    Par RedBurn dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/12/2005, 19h13
  3. Réponses: 5
    Dernier message: 23/10/2005, 18h27
  4. caractère spéciaux dans nom de base
    Par slefevre01 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 16/08/2005, 17h41
  5. [XML] caractères spéciaux dans un type NMTOKEN
    Par norkius dans le forum XML/XSL et SOAP
    Réponses: 7
    Dernier message: 08/09/2004, 14h30

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