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

NetBeans Java Discussion :

localisation de fichiers extérieurs au Jar dans NetBeans : différence Linux et Windows


Sujet :

NetBeans Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Professeur de Guitare titulaire/développeur d'applications musicales (C++, Java, PureBasic, ...)
    Inscrit en
    Mai 2004
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Professeur de Guitare titulaire/développeur d'applications musicales (C++, Java, PureBasic, ...)
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 10
    Points : 8
    Points
    8
    Par défaut localisation de fichiers extérieurs au Jar dans NetBeans : différence Linux et Windows
    Bonjour
    Problème de lecture de fichiers (non incorporés au .jar) Ok dans Windows mais ne fonctionne pas dans Linux (testé dans sur UbuntuStudio avec jdk-8u25 et nb-8_0_1-linux-i586.sh, totalement fonctionnels)
    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String sep = System.getProperty("file.separator");
    monFichier = new File("." + sep + "sounds" + sep + sounds[i]); //
    System.out.println(monFichier.isFile());// "false" dans Linux, "true" dans Windows !?
    Voici l'arborescence du projet dans NetBeans :
    Nom : Netbeans_ArborescenceFichiers.png
Affichages : 162
Taille : 9,7 Ko
    Merci de votre aide
    DoMi
    DoMiSol

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Premièrement, il n'y aucunement besoin d'utiliser le file.separator. Tu peux écrire directement monFichier = new File("sounds", sounds[i]); et ça fonctionnera sur tous les OS. Tu pourrais même faire monFichier = new File("sounds/sousdossier", sounds[i]); s'il y avait un sous dossier : Java gère tout seul le bon séparateur quelque soit celui mis dans le chemin.

    Ensuite, fais un test en ajoutant System.out.println(monFichier.getAbsolutePath()); juste pour vérifier si le dossier par défaut 'celui qui est utilisé par Java pour compléter le chemin d'un fichier relatif) est bien celui attendu.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Professeur de Guitare titulaire/développeur d'applications musicales (C++, Java, PureBasic, ...)
    Inscrit en
    Mai 2004
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Professeur de Guitare titulaire/développeur d'applications musicales (C++, Java, PureBasic, ...)
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Premièrement, il n'y aucunement besoin d'utiliser le file.separator. Tu peux écrire directement monFichier = new File("sounds", sounds[i]); et ça fonctionnera sur tous les OS. Tu pourrais même faire monFichier = new File("sounds/sousdossier", sounds[i]); s'il y avait un sous dossier : Java gère tout seul le bon séparateur quelque soit celui mis dans le chemin.
    Effectivement cela a toujours fonctionné avec NetBeans sur Windows. Mais sous Linux, impossible de trouver les fichiers... c'est pour ça que j'ai préféré prendre des précautions

    Ensuite, fais un test en ajoutant System.out.println(monFichier.getAbsolutePath()); juste pour vérifier si le dossier par défaut 'celui qui est utilisé par Java pour compléter le chemin d'un fichier relatif) est bien celui attendu.
    avec ce nouveau code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
            String sep = System.getProperty("file.separator");
            monFichier = new File("sounds",sounds[i]); //
            System.out.println(monFichier.isFile() + "\n" + monFichier.getAbsolutePath());// "false" dans Linux, "true" dans Windows !?
            try {
                Line.Info linfo = new Line.Info(Clip.class);
                Line line = AudioSystem.getLine(linfo);
                clips[i] = (Clip) line;
                audioInputStream = AudioSystem.getAudioInputStream(monFichier);
                System.out.println("repère");// jamais lu dans Linux : erreur ligne précédente
                clips[i].open(audioInputStream);
                //System.out.println(clips[i]);
            }
            catch (IOException ex) {
                System.out.println(ex);
            }
            catch (LineUnavailableException ex) {
                System.out.println(ex);
            }
            catch (UnsupportedAudioFileException ex) {
                System.out.println(ex);
            }
    Sur Windows j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    D:\SAVE\Documents\Programmation\Java\_NetBeans\_Java\Musique\JavaSoundClipThread\sounds\BELL01.wav
    Sur Linux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /home/domi/NetBeansProjects/JavaSoundClipThread/sounds/BELL01.wav
    ce qui est bon dans les deux cas
    mais sous Linux, en plus de "false" retourné à monFichier.isFile()
    j'ai l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.io.FileNotFoundException: /home/domi/NetBeansProjects/JavaSoundClipThread/sounds/BELL01.wav (Aucun fichier ou dossier de ce type)
    retournée juste après :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    audioInputStream = AudioSystem.getAudioInputStream(monFichier);
    ce qui est cohérent suite au "false"

    !?
    Je peux vous envoyer mon code qui n'est qu'un test pour l'usage de Clip
    merci d'avance pour réponse
    DoMiSol

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Peut-être est-ce un problème de persmission ? Un ls -l affiche quoi ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Professeur de Guitare titulaire/développeur d'applications musicales (C++, Java, PureBasic, ...)
    Inscrit en
    Mai 2004
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Professeur de Guitare titulaire/développeur d'applications musicales (C++, Java, PureBasic, ...)
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Désolé de ne pas avoir répondu tout de suite
    il faudra peut-être que je règle les paramètres du forum pour pouvoir recevoir les notifications...
    Voici le résulat de la commandeque j'ai redirigée vers un fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    total 200
    -rw-rw-r-- 1 domi domi 16020 oct.  28 14:57 BELL01.WAV
    -rw-rw-r-- 1 domi domi 10592 oct.  28 14:57 BELL02.WAV
    -rw-rw-r-- 1 domi domi 19979 oct.  28 14:57 BELL03.WAV
    -rw-rw-r-- 1 domi domi 11326 oct.  28 14:57 BELL04.WAV
    -rw-rw-r-- 1 domi domi 14156 oct.  28 14:57 BELL05.WAV
    -rw-rw-r-- 1 domi domi 13090 oct.  28 14:57 BELL06.WAV
    -rw-rw-r-- 1 domi domi 14028 oct.  28 14:57 BELL07.WAV
    -rw-rw-r-- 1 domi domi 36428 oct.  28 15:01 BELL08_1.WAV
    -rw-rw-r-- 1 domi domi 36428 oct.  28 14:57 BELL08.WAV
    -rw-rw-r-- 1 domi domi 18290 oct.  28 14:57 BELL09.WAV
    DoMiSol

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Ce n'est pas un problème de permissions, mais de casse : dans ton path tu mets BELL01.wav, alors que le fichier s'appelle BELL01.WAV. Sous linux, les noms de fichiers (et de dosiers) sont sensibles à la casse (pas sous Windows).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Professeur de Guitare titulaire/développeur d'applications musicales (C++, Java, PureBasic, ...)
    Inscrit en
    Mai 2004
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Professeur de Guitare titulaire/développeur d'applications musicales (C++, Java, PureBasic, ...)
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    Jes, it works!!!!
    Merci BEAUCOUP!
    DoMi
    DoMiSol

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

Discussions similaires

  1. Installation d'un driver Jar dans Netbeans
    Par JeanNoel53 dans le forum NetBeans
    Réponses: 0
    Dernier message: 08/12/2010, 12h16
  2. Réponses: 1
    Dernier message: 01/09/2010, 16h04
  3. Réponses: 0
    Dernier message: 17/08/2009, 12h11
  4. [NetBeans] generer un fichier jar avec netbeans 5
    Par Invité1 dans le forum NetBeans
    Réponses: 1
    Dernier message: 29/03/2006, 09h00
  5. [JAR]Inclusion de fichiers jar dans la construction d'un jar
    Par elspliffo dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 28/10/2005, 10h01

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