.jar-Datei aus Java heraus aktualisieren

TomHe

Mitglied
Guten Abend,

ich möchte Dateien in der jar-Datei, die ich ausführe, aktualisieren.
Da man, soweit meine Recherche korrekt war, keine einzelnen Dateien in einer jar-Datei ändern kann, war mein erster Ansatz die jar-Datei erst temporär neu zu erzeugen. Hierbei erhalte ich jedoch folgende Fehlermeldung bei der .class-Datei, die das Kopieren ausführen soll:
java.util.zip.ZipException: invalid entry size (expected 2197 but got 0 bytes)

Gibt es allgemeine Wege eine jar-Datei während der Laufzeit zu aktualisieren bzw. wie machen das Programme, die Aktualisierungen aus dem Internet beziehen?

Vielen Dank und noch einen schöne Abend,
Tom
 
Jva webstart sei dir hier ans herz gelegt,
btw jars sind zip archive, du kannst mit den zip stream klassen darauf zugreifen, das wird aber wohl icht gehen solange die vom selben programm geladen sind, von wegen datei wird bereits benutzt
 
Vielen Dank für Deine Antwort!

Webstart löst auf jeden Fall das Update-Problem.

Ich habe auf das Archiv ja mit dem JarOutputStream zugegriffen und bekam da die 0 byte-Fehlermeldung.
Wie macht Ihr das denn, wenn Ihr Programme habt, die irgendwelche Daten (Einstellungen, etc.) speichern müssen? Das hatte ich eben in der jar-Datei vor, was aber wohl nicht geht.
 
Man sollte config-Dateien nicht in die Jar sondern einfach außerhalb ablegen.

Beispiel:

---Mein Programm (Ordner)
-- Mein Programm.jar
-- Config.ini​
--

Grüße
 
Wie macht Ihr das denn, wenn Ihr Programme habt, die irgendwelche Daten (Einstellungen, etc.) speichern müssen? Das hatte ich eben in der jar-Datei vor, was aber wohl nicht geht.

Ich dachte er meint speichern 🙂 Aber lesen geht natürlich 🙂

Gruß
 
Ne, ich meinte schon schreiben. Lesen klappt problemlos.

Ich habe zwei Varianten probiert:
1) Alle Dateien auslesen, in ein temporäres Archiv schreiben und dieses dann umbennen.
2) FileOutputStream(File file, boolean append) mit append = true aufgerufen ("Creates a file output stream to write to the file represented by the specified File object. If the second argument is true, then bytes will be written to the end of the file rather than the beginning.")
 

Zurück
Oben