Hallo,
ich habe ein Verzeichnis voll mit Grafiken, die ich bisher wie folgt in eine HashMap geladen habe:
Nun wollte ich mein Programm einem Grafiker als jar zukommen lassen.
Innerhalb einer jar ist das Laden der Dateien wie oben natürlich auf Grund des veränderten Pfades, nicht möglich.
Ich weiß das man mit classname.class.getResource(...) innerhalb eines statischen Kontext bzw. außerhalb auch mit getClass().getResource(...) auf Dateien wunderbar zugreifen kann (auch wenn es sich nicht um eine jar handelt).
Nun habe ich folgendes versucht:
Das funktioniert leider innerhalb einer jar nicht. url ist null, das Verzeichnis wird also nicht gefunden. Wenn ich stattdessen "graphics/bsp.gif" versuche, also eine einzelne Datei im Verzeichnis direkt anspreche geht es, sprich er findet die Datei im Verzeichnis aber nicht das Verzeichnis selber.
Ich hoffe hier kann mir jemand helfen, google konnte es leider nicht.
ich habe ein Verzeichnis voll mit Grafiken, die ich bisher wie folgt in eine HashMap geladen habe:
Code:
public static void init(){
String imagesDir = "graphics/";
File cwd = new File(imagesDir);
File files[] = cwd.listFiles();
for (File file : files) {
if(file.getName().endsWith(".gif")){
try {
BufferedImage img = ImageIO.read(file);
String name = file.getName().replaceAll(".gif","");
imageHeap.put(name, img);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Unkown Error during loading the images.\n"
+ "Problem with " + file, "Error", JOptionPane.ERROR_MESSAGE);
}
}
}
Nun wollte ich mein Programm einem Grafiker als jar zukommen lassen.
Innerhalb einer jar ist das Laden der Dateien wie oben natürlich auf Grund des veränderten Pfades, nicht möglich.
Ich weiß das man mit classname.class.getResource(...) innerhalb eines statischen Kontext bzw. außerhalb auch mit getClass().getResource(...) auf Dateien wunderbar zugreifen kann (auch wenn es sich nicht um eine jar handelt).
Nun habe ich folgendes versucht:
Code:
public static void init(){
String imagesDir = "graphics/";
URL url = Images.class.getResource(imagesDir);
System.out.println(url);
try { imagesDir=URLDecoder.decode(url.getFile(),"UTF-8"); }
catch (UnsupportedEncodingException e1) {}
File cwd = new File(imagesDir);
File files[] = cwd.listFiles();
for (File file : files) {
if(file.getName().endsWith(".gif")){
try {
BufferedImage img = ImageIO.read(file);
String name = file.getName().replaceAll(".gif","");
imageHeap.put(name, img);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Unkown Error during loading the images.\n"
+ "Problem with " + file, "Error", JOptionPane.ERROR_MESSAGE);
}
}
}
Das funktioniert leider innerhalb einer jar nicht. url ist null, das Verzeichnis wird also nicht gefunden. Wenn ich stattdessen "graphics/bsp.gif" versuche, also eine einzelne Datei im Verzeichnis direkt anspreche geht es, sprich er findet die Datei im Verzeichnis aber nicht das Verzeichnis selber.
Ich hoffe hier kann mir jemand helfen, google konnte es leider nicht.