FileWriter innerhalb runnable Jar

moccajoghurt

Bekanntes Mitglied
Hi,
ich habe folgendes Problem:
Ich möchte bei einem Programm gewisse Daten aus einer Datei innerhalb einer runnable Jar Datei lesen.

Folgenden Code nutze ich, der innerhalb von Eclipse funktioniert:

Java:
		load = this.getClass().getClassLoader();
		BufferedReader buffer = new BufferedReader(new FileReader(load
				.getResource("init.ini").getPath().replace("%20", " ")));
		while ((read = buffer.readLine()) != null) {
			System.out.println(read);
		}

Die runnable Jar Datei jedoch lässt sich dadurch nicht mehr ausführen. Woran liegt das, wie kann ich das fixen?

Gruß mocca
 
Zuletzt bearbeitet:
Was genau meinst du mit "nicht ausführen"? Vermutlich fliegt eine Exception, die du nicht siehst, da du es nicht aus der Konsole startest.
Zum Thema: du kannst direkt mit getResourceAsStream arbeiten.
 
Mit der getResourceAsStream Funktion klappt es. Ich frag mich nur wieso... Wo liegt der Unterschied zu der vorigen Methode?

Weil dein vorheriger Code, wie XHelp bereits sagte, aus irgendeinem Grund, wahrscheinlich eine Exception verursacht hatte.

Wenn du genau herausfinden willst woran es lag:
1. Nochmal zurück zum Ausgangscode
2. Compilen
3. Jaren
4. Textfile im selben verzeichnis anlegen
5. Folgendes in die Textfile schreiben:
@echo off
java -jar [Name].jar
pause
6. speichern und die Datei dann umbenennen zu "StartIt.bat"
7. Die Datei ausführen.
 
Du kannst auf Dateien innerhalb eines JARs nicht mit der File API zugreifen. Sie ist nur für Dateien in einem Dateisystem gedacht.
 
Ok verstehe. Danke soweit.

Jetzt hab ich aber direkt das nächste Problem:

Wie kann ich jetzt die ini-Datei innerhalb der runnable Jar verändern? Habe es über den OutputStreamWriter nicht hinbekommen... oder muss ich es damit weiterprobieren?
 
Ach mist... das bedeutet, dass die ich zum Speichern von Daten immer eine Datei brauche, die außerhalb der Jar liegt? Dann bleibt mir wohl nichts anderes übrig, als die Jar zusammen mit einem Ordner zu liefern.
 
Naja, Einstellungen etc gehören ja auch nicht in die Jar. Diese mitauszuliefern brauchst du nicht mal. Du kannst beim Start überprüfen, ob eine Datei da ist, wenn nicht, dann eine Default-Konfiguration da reinspeichern.
 

Zurück
Oben