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 :

Caractère spécial dans le path d'un fichier


Sujet :

Langage Java

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 13
    Points : 12
    Points
    12
    Par défaut Caractère spécial dans le path d'un fichier
    Bonjour à tous. J'espère que vous avez passé de bonnes vacances ( pour ceux qui ont eu la chance d'en avoir ^^ ).

    J'ai actuellement un problème assez étrange concernant la compilation de mon projet via Ant.

    J'indique à Ant un fichier projectproperties.xml qui malheureusement se trouve sous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\MonProjet#1.3\monModules\projectproperties.xml
    Votre oeuil averti aura tout de suite repéré le '#' dans le path... bah Ant aussi...

    en lançant Ant en mode débug , je m'aperçoit de 2 choses :

    - d'abord , visiblement aucun problème pour ce path ( trace de Ant à l'appui : )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [xmlproperty] Loading C:\MonProjet#1.3\monModules\projectproperties.xml
    - puis boum...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    BUILD FAILED
    C:\MonProjet#1.3\monModules\projectproperties.xml:487: java.io.FileNotFoundException: C:\MonProjet (Le fichier spécifié est introuvable)
    Bon, pour être sûr de ce que Ant faisait , j'ai jeté un oeuil dans les sources et ajouté une poignée de traces.

    Je que j'en ai tiré : Ant crée un fichier 'src' à partir du path en question.
    Lorsque je tente un src.getAbsolutePath() , aucun problème , il me sort bien le path avec le '#'.

    Le plantage a lieu lorsque Ant tente de créer un objet Document à partir de ce fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Document document = factory.newDocumentBuilder().parse(src);
    ...là ça passe pas.

    J'en vient à ma question : comment faire ? Y a-t-il un moyen d'échapper ce '#' ?

    Je précise immédiatement qu'il est hors de question de modifier le path du fichier ( pour la bonne idée du '#' , parlez-en au dévs de Synergy )

    Je précise également que ça ne me pose aucun problème de modifier une classe de Ant.

    Merci d'avance d'avoir lu jusqu'au bout

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Tu devrais aussi nous donner ton script Ant également
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 13
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par dinobogan Voir le message
    Tu devrais aussi nous donner ton script Ant également
    Le problème c'est que mon script fait dans les 300 lignes :/

    Je mets quand même la partie "interressante" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    :Project
     
    call %ANT_HOME%\bin\ant.bat %ANT_COMMON_ARGS% -f buildproject.xml -Dbasedir="%BUILD_ROOT_DIR%" -Dbuild.target=%BUILD_TARGET% dispatch
    goto :End
    avec :

    %ANT_COMMON_ARGS% = -l "path du fichier le logs"
    %BUILD_TARGET% = Compile
    %BUILD_ROOT_DIR% = "path de mon projet"

    En fait, rien de vraiment sorcier.

    Bon, j'ai fait le bourrin...

    J'ai recompilé un Ant en changeant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Document document = factory.newDocumentBuilder().parse(src);
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Document document = factory.newDocumentBuilder().parse(src.toURI().toString());
    En fait, j'ai juste remarqué qu'utiliser le path avec '#' ne posait pas de pb pour créer un File , mais que par contre, le parser du DocumentBuilder pétait un plomb. Or , ce même parser peut prendre en argument une URI. et oh magie , le src.toURI() échappe le '#' ( en le transformant en %xx , avec xx = 23 je crois, je me rapelle plus bien ^^ ).

    Bon bref, ça marche avant la fin de journée c'était le but. Mais je ne peux m'empêcher d'avoir un léger voile rouge de honte au joues... c'est quand même un peu hérétique d'avoir à modifier Ant pour ça...

    J'ai maintenant une sorte de Ant apocryphe que je n'oserais jamais montrer à personne. Bien fait

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

Discussions similaires

  1. PBM Ecriture caractère spécial dans fichier XML
    Par Le Grand Habchkleu dans le forum VBScript
    Réponses: 1
    Dernier message: 14/09/2009, 11h14
  2. Réponses: 4
    Dernier message: 10/04/2007, 11h10
  3. [VBA-EXCEL] Caractère spécial " dans requete sql
    Par rafnt dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/09/2006, 16h26
  4. Insertion caractère spécial dans un fichier
    Par lenouvo dans le forum MFC
    Réponses: 2
    Dernier message: 01/02/2006, 11h30
  5. [langage] variable dans le path d'un fichier
    Par caro_du_94 dans le forum Langage
    Réponses: 2
    Dernier message: 21/10/2004, 12h03

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