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

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 287
    Points : 100
    Points
    100
    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 561
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 561
    Points : 21 624
    Points
    21 624
    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.

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 287
    Points : 100
    Points
    100
    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 561
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 561
    Points : 21 624
    Points
    21 624
    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.

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 287
    Points : 100
    Points
    100
    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