J’aimerais le rendre executable plutôt que d’avoir à lancer une console etc…
J’arrive à regrouper les .class dans un jar executable mais le problème est que il faut pour le moment que mes dossiers contenant les images utilisées dans mes .class soient dans le même dossier que ce jar.
Ce que je voudrais c’est TOUT regrouper dans le jar, autrement dit mon dossier images, les .class etc…
Tu peux stocker tes images dans ton jar en tant que ressource. Il faut modifier l’utilisation de tes images, elles sont accessibles par UneClasse.getClass().getRessource(“image.jpg”) ou UneClasse.getClass().getRessourceAsStream(“image.jpg”)
le premier cas te permet de retrouver l’url de ton image commençant par “jar:…” tu peux aussi spécifier directement cette url. (par exemple dans le Toolkit.getImage(URL) )
UneClasse c’est juste c’importe quelle classe de ton projet, ça permet juste d’appeler la méthode Class.getRessource.
une ressource c’est n’importe quel fichier accessible via ton classpath, donc il faut que les images soit dans le jar.
Après c’est dans le code java ou tu utilise les images qu’il faut s’assurer que tu va bien chercher les images en tant que ressource, donc toutes les références à tes images dans ton projet doivent pointer sur une URL de ressource: c’est dans tes sources Java que tu risque d’être obligé de modifier des choses. (sauf si c’est déjà fait) essaye de regarder au moins une de tes images pour voir comment elle est utilisée dans le source, et pour débugger, tu la place à un autre endroit d’un chemin accesible par le classpath.
Merci beaucoup ! je viens de réussir (apparement :paf: j’ai pas encore tout tester).
Pour ceux que ça interresse, j’ai changer dans ma classe où je chargeait mes images ceci :
TRESOR = new ImageIcon(Toolkit.getDefaultToolkit().getImage("img/tresor.gif").getScaledInstance(tailleCase,tailleCase,Image.SCALE_DEFAULT));
par ceci :
TRESOR = new ImageIcon(Toolkit.getDefaultToolkit().getImage(getClass().getResource("img/tresor.gif")).getScaledInstance(tailleCase,tailleCase,Image.SCALE_DEFAULT));
La technique que vous m’avez décrite fonctionne très bien avec les images, mais je me retrouve avec un problème pour lire dans un fichier texte, que je met lui aussi dans le jar.
Ma lecture se fait par un BufferedReader.
Est-il possible de lire un fichier via un getResource ou un getResourceAsStream ?(si possible en conservant mon code avec le BufferedReader)
Merci.
PS : j’ai bien essayer ça mais sans succès :
lecteurAvecBuffer = new BufferedReader(new FileReader(getClass().getResource(nom_fic).getFile()));