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

Entrée/Sortie Java Discussion :

[JAR] Erreur java.io.FileNotFoundException


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 23
    Par défaut [JAR] Erreur java.io.FileNotFoundException
    Bonjour à tous et à toutes,

    Dans le cadre d'un petit projet personnel informatique, j'ai décidé de créer un JAR executable de mon application afin de pouvoir le faire tester à différentes personnes.
    Mon projet utilise la librairie de Slick afin de créer un jeu de manière assez simple.

    J'ai donc eu un problème lors de la création de mon JAR executable. J'ai utilisé JarSplice, un outil permettant de créer facilement et simplement le JAR executable tant voulu .

    Le tutoriel que j'ai suivi s'applique donc de la sorte :

    1) Exporter le code et ressources dans un JAR normal via un IDE (j'utilise Eclipse)

    2) Démarrer JarSplice, dans "ADD JARS", ajouter les librairies que l'on souhaite utiliser dans notre application (principalement slick.jar, lwjgl.jar et jdom.jar dans mon cas). Mais ajoutez aussi votre premier JAR généré par votre IDE.

    3) Dans "ADD NATIVES" ajouter les .dll, .so, .jnilib et .dylib pour les différentes OS.

    4) Dans "MAIN CLASS", ajouter la classe de lancement de votre application de type package.souspackage.[...].votreClasse

    5) Créer votre executable dans l'onglet "CREATE FAT JAR". Vous obtenez donc votre JAR executable.

    Jusque là, super ça marche bien .

    Mais voilà, lors de mon execution "java -jar monJar.jar", le JAR se lance très bien (Plusieurs affichages correspondant à mon appli sont affichés) jusqu'au moment où le programme cherche à utiliser un fichier. En effet, il semblerait qu'une "java.io.FileNotFoundException" soit retournée lorsque j'essaye d'accéder à mon dossier qui ... n'existe pas dans mon JAR

    Voici l'erreur retournée :
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    - Initialisation du menu de jeu ...
    Creation du menu de jeu terminée ...
    - Initialisation du moteur du jeu ...
    java.io.FileNotFoundException: C:\data\xml\resources.xml (Le chemin d'accès spécifié est introuvable)
            at java.io.FileInputStream.open(Native Method)
            at java.io.FileInputStream.<init>(Unknown Source)
            at java.io.FileInputStream.<init>(Unknown Source)
            at sun.net.www.protocol.file.FileURLConnection.connect(Unknown Source)
            at sun.net.www.protocol.file.FileURLConnection.getInputStream(Unknown So
    urce)
            at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrent
    Entity(Unknown Source)
            at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineD
    ocVersion(Unknown Source)
            at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(U
    nknown Source)
            at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(U
    nknown Source)
            at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown So
    urce)
            at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Un
    known Source)
            at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.p
    arse(Unknown Source)
            at org.jdom.input.SAXBuilder.build(SAXBuilder.java:518)
            at org.jdom.input.SAXBuilder.build(SAXBuilder.java:905)
            at org.jdom.input.SAXBuilder.build(SAXBuilder.java:884)
            at Jeu.Outils.DomParser.getCurrentMap(DomParser.java:50)
            at Vue.GameplayState.init(GameplayState.java:146)
            at Jeu.Main.WizardGame.initStatesList(WizardGame.java:58)
            at org.newdawn.slick.state.StateBasedGame.init(StateBasedGame.java:164)
            at org.newdawn.slick.AppGameContainer.setup(AppGameContainer.java:390)
            at org.newdawn.slick.AppGameContainer.start(AppGameContainer.java:314)
            at Jeu.Main.WizardGame.main(WizardGame.java:44)
    Exception in thread "main" java.lang.NullPointerException
            at Jeu.Outils.DomParser.getCurrentMap(DomParser.java:58)
            at Vue.GameplayState.init(GameplayState.java:146)
            at Jeu.Main.WizardGame.initStatesList(WizardGame.java:58)
            at org.newdawn.slick.state.StateBasedGame.init(StateBasedGame.java:164)
            at org.newdawn.slick.AppGameContainer.setup(AppGameContainer.java:390)
            at org.newdawn.slick.AppGameContainer.start(AppGameContainer.java:314)
            at Jeu.Main.WizardGame.main(WizardGame.java:44)
    Vous aurez donc compris que mon JAR executable n'arrive pas à accéder à mon fichier "data". Surement un problème de chemin relatif ou absolu je ne sais pas, mais je n'arrive pas à m'en sortir

    Si vous avez de quoi m'éclairer sur ma création de JAR executable, je vous en remercie d'avance. Si vous avez des questions ou avez besoin de plus d'informations n'hésitez pas

    Merci d'avance, en espérant que vous pourrez me sauver !

  2. #2
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Salut,


    Je ne comprend pas le rapport avec le jar, puisque tu accèdes à un fichier sur le disque.


    a++

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 23
    Par défaut
    C'est pour ça que je ne comprends pas. Tout est sur le disque ! Pourquoi est ce que, lorsque je lance mon appli via Eclipse, tout fonctionne bien ? Mais lorsque je lance mon appli via mon JAR, celà ne fonctionne pas !

    Peut être que je me suis mal exprimé !

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 23
    Par défaut
    J'accède ainsi dans mon programme à mes fichiers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    try {
              document = sxb.build(new File("data/xml/resources.xml"));
         } catch (JDOMException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
         } catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
         }
    J'ai donc créé un JAR de ce programme avec l'IDE.
    J'ai ensuite utilisé FarSplice, où je fais appel à précédent JAR créé et ainsi qu'à toutes les librairies que j'utilise.
    Cette dernière action me créé donc un JAR executable que je lance ensuite.

    Au lancement, le JAR n'arrive pas à atteindre les ressources (sons,images, fichiers.xml ..etc) que j'ai intégré à celui ci ...

  5. #5
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Ben là tu accèdes à un fichier sur le disque dur. Si le fichier n'est pas présent alors c'est normal que cela plante...


    Si tu veux utiliser un fichier à l'intérieur du jar, du dois passer par le classloader via getResource()...


    a++

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 23
    Par défaut
    Ok, merci pour la réponse !

    J'ai testé de changer celà uniquement pour mon DOM.Parser et ça a fonctionné. Je ne sais pas pourquoi, pas besoin de faire différent d'un FileInputStream pour les images !

    A plus tard

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/05/2012, 16h50
  2. Réponses: 4
    Dernier message: 07/03/2012, 11h08
  3. Erreur "java.io.FileNotFoundException" sous XP
    Par polymorphisme dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 06/03/2012, 11h54
  4. Réponses: 8
    Dernier message: 09/11/2010, 11h59
  5. Erreur : java.io.FileNotFoundException
    Par dg_dev dans le forum Entrée/Sortie
    Réponses: 8
    Dernier message: 09/01/2009, 16h56

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