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 :
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
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)
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 !
Partager