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 : 173
Taille : 9,7 Ko
    Merci de votre aide
    DoMi

  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 : 55
    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.

  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

  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 : 55
    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 ?

  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

  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 : 55
    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).

  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

+ 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