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 :

Problème pour lister les fichiers d'in JAR


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 287
    Par défaut Problème pour lister les fichiers d'in JAR
    Bonjour,

    Développant sous Eclipse, je souhaiterais lister le contenu d'un dossier ayant pour chemin mon workspace/mon projet/ressources/scriptMajBdd/scriptsMajBdd/ (2 fois oui).

    Ce dossier contient des fichiers .sql qui me permettent de mettre à jour une bdd.

    Pour cela je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    //On récupére le fichier
    String urlFile = Main.class.getClassLoader().getResource("scriptMajBdd").getFile();
    urlFile = urlFile.replace("%20", " ");
     
    //on se place sur le dossier contenant les fichiers
    dossierScriptsMAJBdd = new File(urlFile);
    String[] tableauDeFichiers = dossierScriptsMAJBdd.list();
    listeVersionsBDD = new ArrayList<Double>();
    for (int i=0;i<tableauDeFichiers.length;i++){
      Double version = new Double(tableauDeFichiers[i].replace(".sql",""));
      listeVersionsBDD.add(version);
      lastVersionOfBDD = version;
    }
    ce qui fonctionne parfaitement.

    Le problème apparaît une fois l'application compilée. En effet, ces fichiers sql se retrouvent dans le jar scriptMajBdd /scriptMajBDD, et l'application me renvoi un nullPointerException.

    Une idée du problème?

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par Micke7 Voir le message
    Une idée du problème?
    Ben, une entrée dans un .jar n'est pas un File, tout simplement.

    Si tu connais le nom de tous les fichiers à lire, tu devrais plutôt utiliser ClassLoader.getResourceAsStream() : cela permet de lire une ressource accessible au classLoader, que ce soit sous forme de fichiers ou de .jar ou autre.

    Si tu ne les connais pas, c'est plus embêtant : il faut bricoler, détecter que c'est dans un .jar, lequel, ouvrir le .jar et lister son contenu.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 287
    Par défaut
    Effectivement je ne connais pas les fichiers. En fait ces fichiers me servent pour récupérer la liste des maj disponibles pour la BDD (leur nom est en fait le num. de version de la maj dispo (1.0.sql , 1.2.sql...)
    ), et si besoin est, exécuter les requêtes qu'ils contiennent.

    Mon but était de gérer un minimum de fichiers différents afin de minimiser le risque d'oubli et donc d'erreur.
    Donc à part si quelqu'un a une meilleure idée, je vais créer un fichier dont je serais sûr de l'existence (versionBDD.txt par exemple ) contenant la liste des maj de la BDD disponibles et donc la liste des fichiers sql du dossier.

    C'est la première fois que j'ai à gérer une mise à jour de bdd en fonction d'une application, donc si mon idée vous parez saugrenue, qu'il me le dise

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par Micke7 Voir le message
    Donc à part si quelqu'un a une meilleure idée, je vais créer un fichier dont je serais sûr de l'existence (versionBDD.txt par exemple ) contenant la liste des maj de la BDD disponibles et donc la liste des fichiers sql du dossier.
    Personnellement c'est ce que je fais dans ces cas-là. Je m'arrange juste pour que le fichier contenant la liste soit généré automatiquement par mes outils de livraison. En général il est assez simple d'intégrer ce genre de choses.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 287
    Par défaut
    Je n'y avait pas pensé: je vais ajouter une tache à mon script ANT qui générera automatiquement ce fichier.
    Merci

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

Discussions similaires

  1. [Free Pascal] Problème pour lister les fichiers d'un serveur distant
    Par mm_71 dans le forum Free Pascal
    Réponses: 6
    Dernier message: 26/06/2013, 09h52
  2. Réponses: 1
    Dernier message: 25/02/2009, 09h44
  3. Lister les fichiers d'un JAR
    Par Yannick_from_31 dans le forum Langage
    Réponses: 6
    Dernier message: 02/10/2007, 11h19
  4. Problème pour lister les fichiers d'un répertoire
    Par Vitaly dans le forum Applets
    Réponses: 17
    Dernier message: 21/08/2007, 00h49
  5. Problème pour ouvrir des fichiers .exe et .jar via une page html
    Par coyaote dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 15/02/2007, 12h28

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