Hiho,
Eure Hilfe ist mal wieder von Nöten
Ich habe mir einen kleinen MapEditor geschrieben, hat alles ohne Probleme geklappt. Dann habe ich eine Klasse TileMap erstellt, die die Map (Textdatei) laden und dementsprechend auswerten soll. Das klappt auch alles, allerdings (und genau darin liegt das Problem) nur, wenn ich einen statischen Pfad für diese angebe. Also wenn die .jar auf einem Rechner ausgeführt werden soll, auf dem dieser Pfad nicht vorhanden ist, findet das Programm die Textdatei nicht.
Aus Quaxlis Tutorial habe ich die Bildlademethode übernommen bei dem man mit Hilfe einer URL den "relativen" Pfad benutzt. Das funktioniert auch, nur scheint es beim FileReader Probleme zu geben.
An dieser Stelle möchte ich mal etwas Code posten:
Hier ist sbMap=file:/home/ufftata/NetBeansProjects/Autorennenv0.2/build/classes/map.txt
Das geht nicht, da das "file:" davor steht. Lösche ich das "file:" aus dem sbMap funktioniert es, allerdings nicht für die .jar.
Führe ich die .jar aus ist sbMap=jar:file:Autorennenv0.2.jar!/map.txt und es kommt folgende Fehlermeldung:
Exception in thread "main" java.io.FileNotFoundException: jar:file:Autorennenv0.2.jar!/map.txt (no such file or directory)
Soweit so gut. Jetzt dachte ich mir, machste einfach mal das "jar:file:" weg. Aber da kommt genau die gleiche Fehlermeldung und wenn sbMap nur noch "/map.txt" bzw. "map.txt" beeinhaltet, auch. Die "map.txt" habe ich vorsichtshalber in folgende Verzeichnise getan:
Einmal in Autorennenv0.2/build/classes (mit den Bilder funktioniert dieser Pfad) und in Autorennenv0.2/build/classes/autorennenv02 (da sind die .class Dateien zu Hause, sowie in Quaxlis Tutorial).
In der .jar Datei ist sie direkt im "root" Verzeichnis und dann bei "/autorennenv0.2" (die sind die .class Sachen drin)
Die Frage ist jetzt also, was bei (new FileReader(sbMap)) stehen muss, damit er die .txt Datei in der .jar Datei, findet.
Ich hoffe ihr könnt mir weiterhelfen
Danke schonmal im Vorraus
Eure Hilfe ist mal wieder von Nöten
Ich habe mir einen kleinen MapEditor geschrieben, hat alles ohne Probleme geklappt. Dann habe ich eine Klasse TileMap erstellt, die die Map (Textdatei) laden und dementsprechend auswerten soll. Das klappt auch alles, allerdings (und genau darin liegt das Problem) nur, wenn ich einen statischen Pfad für diese angebe. Also wenn die .jar auf einem Rechner ausgeführt werden soll, auf dem dieser Pfad nicht vorhanden ist, findet das Programm die Textdatei nicht.
Aus Quaxlis Tutorial habe ich die Bildlademethode übernommen bei dem man mit Hilfe einer URL den "relativen" Pfad benutzt. Das funktioniert auch, nur scheint es beim FileReader Probleme zu geben.
An dieser Stelle möchte ich mal etwas Code posten:
Code:
public TileMap(String s, int anzahlDerWerte) throws FileNotFoundException {
urlMap=getClass().getClassLoader().getResource(s);
sbMap=new StringBuffer();
sbMap.append(urlMap.toString());
this.in=new BufferedReader(new FileReader(sbMap));
Hier ist sbMap=file:/home/ufftata/NetBeansProjects/Autorennenv0.2/build/classes/map.txt
Das geht nicht, da das "file:" davor steht. Lösche ich das "file:" aus dem sbMap funktioniert es, allerdings nicht für die .jar.
Führe ich die .jar aus ist sbMap=jar:file:Autorennenv0.2.jar!/map.txt und es kommt folgende Fehlermeldung:
Exception in thread "main" java.io.FileNotFoundException: jar:file:Autorennenv0.2.jar!/map.txt (no such file or directory)
Soweit so gut. Jetzt dachte ich mir, machste einfach mal das "jar:file:" weg. Aber da kommt genau die gleiche Fehlermeldung und wenn sbMap nur noch "/map.txt" bzw. "map.txt" beeinhaltet, auch. Die "map.txt" habe ich vorsichtshalber in folgende Verzeichnise getan:
Einmal in Autorennenv0.2/build/classes (mit den Bilder funktioniert dieser Pfad) und in Autorennenv0.2/build/classes/autorennenv02 (da sind die .class Dateien zu Hause, sowie in Quaxlis Tutorial).
In der .jar Datei ist sie direkt im "root" Verzeichnis und dann bei "/autorennenv0.2" (die sind die .class Sachen drin)
Die Frage ist jetzt also, was bei (new FileReader(sbMap)) stehen muss, damit er die .txt Datei in der .jar Datei, findet.
Ich hoffe ihr könnt mir weiterhelfen
Danke schonmal im Vorraus