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 :

Fichier introuvable dans un .jar


Sujet :

Langage Java

  1. #1
    Membre régulier Avatar de mattyeux
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    169
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 169
    Points : 101
    Points
    101
    Par défaut Fichier introuvable dans un .jar
    Bonjour,

    Je suis en train de créer un applet. L'applet s'affiche bien dans ma page web. Parcontre, une fonctionalité de mon application est cencé récuperer des données dans un fichier excel.


    Au moment où je demande la lecture du fichier, une exeption se lève dans la console java du navigateur:
    java.io.FileNotFoundException: .\data\donneeRCC.xls (Le chemin d'accès spécifié est introuvable)

    Voici comment est fait mon .jar:

    META-INF/
    META-INF/MANIFEST.MF
    *.class -->tous mes .class
    data/
    data/donneeRCC.xls
    img/
    img/logo.jpg
    img/.*jpeg --> toutes mes images
    *.jar -->toutes les librairies externes que j'utilise


    Donc a priori ./data/donneeRCC.xls est bien mis dans le .jar

    Sinon mon fichier html qui permet de lancer l'applet se trouve dans le même répertoire que le .jar lançant l'applet.

    J'aimerais bien trouver pourquoi je n'arrive pas a lire ce fichier ... Pourriez vous m'aider ?

    Merci,

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Quel code utilise-tu pour lire ce fichier ?
    Il faut utiliser getResource() du classloader pour récupérer un fichier dans un jar...

    a++

  3. #3
    Membre régulier Avatar de mattyeux
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    169
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 169
    Points : 101
    Points
    101
    Par défaut
    J'utilise une librairie qui permet de parser des fichier excel... Cette librairie s'apelle jExcelApi. Donc j'utilise une fonction de leur api qui ressemble à ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbook workbook = Workbook.getWorkbook(new File("./data/donneeRCC.xls"));
    Je ne sais pas du tout ce qu'ils utilisent derrière ...

  4. #4
    Membre régulier Avatar de mattyeux
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    169
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 169
    Points : 101
    Points
    101
    Par défaut
    J'apporte une petite précision importante. Le programme en tant qu'application (c'est à dire non applet) fonctionne correctement. Le fichier excel est correctement lu et correctement parsé. Mais le programme en tant qu'application n'est pas un .jar, je l'execute simplement via mon environnement de développement.

  5. #5
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par mattyeux
    J'apporte une petite précision importante. Le programme en tant qu'application (c'est à dire non applet) fonctionne correctement. Le fichier excel est correctement lu et correctement parsé. Mais le programme en tant qu'application n'est pas un .jar, je l'execute simplement via mon environnement de développement.
    Normal : comme ton application n'est pas jarré, ton fichier est bien un fichier simple !

    Or une fois qu'il est jarré cela devient un "fichier" à l'intérieur d'un autre fichier, et cela n'est pas géré par la classe File qui représente seulement un "vrai" fichier sur le système de fichier de l'OS.

    Donc il te faut bien utiliser getResource(), mais pour cela il faut que tu consultes l'API de jExcelApi : la méthode getWorkbook() doit surement accepter d'autres types en paramètre (comme URL ou InputStream par exemple).

    Par exemple avec URL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbook.getWorkbook( getClass().getResource("/data/donneeRCC.xls") );
    a++

  6. #6
    Membre régulier Avatar de mattyeux
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    169
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 169
    Points : 101
    Points
    101
    Par défaut
    D'après la doc de jExcelApi, j'ai la possibilité de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    static Workbook getWorkbook(java.io.File file) 
    static Workbook getWorkbook(java.io.InputStream is)
    La première ne marche pas donc j'ai tester la deuxième en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FileInputStream fic = new FileInputStream("data/donneeRCC.xls");
    Workbook workbook = Workbook.getWorkbook(fic);
    Mais toujours la même erreur ...

  7. #7
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbook.getWorkbook( getClass().getResourceAsStream("/data/donneeRCC.xls") );
    Comme je l'ai dit une fois qu'il est dans le jar, ce n'est plus un fichier standard, et donc il n'est plus accessible via les objet File, FileInputStream, FileReader, et toutes les classes/méthodes qui s'attende à un fichier...

    a++

  8. #8
    Membre régulier Avatar de mattyeux
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    169
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 169
    Points : 101
    Points
    101
    Par défaut
    oups, j'y connais pas grands choses en flux, désolé si je suis long à la détente.
    Jvais essayer de voir comment faire avec InputStream.

  9. #9
    Membre éclairé
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Points : 756
    Points
    756
    Par défaut
    Citation Envoyé par adiGuba
    Comme je l'ai dit une fois qu'il est dans le jar, ce n'est plus un fichier standard, et donc il n'est plus accessible via les objet File, FileInputStream, FileReader, et toutes les classes/méthodes qui s'attende à un fichier...
    Citation Envoyé par mattyeux
    Jvais essayer de voir comment faire avec InputStream
    l'InputStream ne marchera pas non plus. Suis les conseils d'adiguba
    "Le calendrier, c'est la bureaucratie du temps." Quino

  10. #10
    Membre régulier Avatar de mattyeux
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    169
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 169
    Points : 101
    Points
    101
    Par défaut
    Ben, j'ai pas d'autre solution puisque ma librairie me permet seulement de récuperer le fichier en utilisant soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    static Workbook getWorkbook(java.io.File file)
    soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    static Workbook getWorkbook(java.io.InputStream is)
    Donc je suis un peu bloqué ...

    Je ne peux pas utiliser la classe URL ...

  11. #11
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par mattyeux
    Donc je suis un peu bloqué ...
    Je ne t'ai pas dit de ne pas utiliser InputStream mais FileInputStream.

    Ensuite soit un peu attentif aux réponses ! Je t'ai donné la réponse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbook.getWorkbook( getClass().getResourceAsStream("/data/donneeRCC.xls") );
    getResourceAsStream() te renvoit un InputStream qui lit le fichier /data/donneeRCC.xls à l'intérieur du jar. Il faut simplement que la classe sur laquelle tu appelles cette méthode appartient au même jar...

    a++

  12. #12
    Membre régulier Avatar de mattyeux
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    169
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 169
    Points : 101
    Points
    101
    Par défaut
    Au risque de passer pour un naze. Je ne peux pas utiliser getClass car la méthode dans laquelle je fais mon traitement est statique...

  13. #13
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par mattyeux
    Au risque de passer pour un naze. Je ne peux pas utiliser getClass car la méthode dans laquelle je fais mon traitement est statique...

    a++

  14. #14
    Membre régulier Avatar de mattyeux
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    169
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 169
    Points : 101
    Points
    101
    Par défaut
    Ahhhhhhh ! Ben merci beaucoup adiGuba. Ca a été laborieux mais j'aurais au mois appris des choses .

    A++

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

Discussions similaires

  1. Fichier introuvable dans un JAR
    Par t-student dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 30/09/2010, 17h35
  2. Fichier introuvable dans un jar
    Par brainstorm dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 19/05/2009, 19h10
  3. [JAR] Lire et Ecrire dans un fichier contenu dans un jar
    Par lipao17 dans le forum Général Java
    Réponses: 5
    Dernier message: 02/05/2005, 13h01
  4. [JAR]Fichier manifest dans un jar
    Par nicoo dans le forum Général Java
    Réponses: 2
    Dernier message: 10/03/2005, 09h51
  5. [JAR] Comment écrire dans un fichier properties dans un jar
    Par Alec6 dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 05/10/2004, 16h16

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