martingallee
Grünschnabel
Liebe Java-Experten,
ich habe ein paar grundsätzliche Fragen zum Thema jar, über die ich mir jetzt schon ziemlich lange den Kopf zerbreche. Es gibt zwar über das Thema allgemein erfreulich viel an Material, aber das, um was es mir geht, ist irgendwie bisher nicht dabei gewesen.
Ich habe ein Java-Programm als jar auf eine CD-ROM gepackt und starte das Ganze mit einer Batch-Datei (und Autostart unter Windows). Das funktioniert auch soweit. Aber...
Während des Programmablaufs soll der Benutzer die Möglichkeit bekommen, bestimmte Daten in einer Datei zu speichern (Spielstände, Bestenliste etc.), die dann auch dauerhaft auf der Festplatte steht. Unter Eclipse klappt das auch, ich schreibe die relevanten Daten zunächst in ein Objekt und serialisiere dieses dann in eine ".ser"-Datei. Das Problem ist nun aber, dass sich auf der CD-ROM ja nur ein jar befindet, und in diesem weiteren Zusammenhang habe ich nun folgende Fragen:
- Was genau passiert, wenn das .jar von der CD-ROM gestartet wird? Extrahiert der Klassenlader die ".class"-Dateien einfach und führt sie ohne weitere Umschweife aus? Oder wird irgendwo auf der Festplatte so etwas wie ein Ausführungsverzeichnis angelegt, in dem sich dann auch zum Beispiel eine Datei mit Spielständen sinnvoll anlegen ließe? Wenn etwas auf der Festplatte angelegt wird - ist das dann eine Kopie des jars von der CD-ROM oder eine entpackte Version? Die Frage ist für mich (außer bloßem Interesse) deshalb wichtig, weil sich der Umgang mit Streams ja im Falle eines jars anders gestaltet als bei nicht komprimierten Programmen. Falls beim Ausführen nichts auf der Festplatte angelegt wird - gibt es zur Laufzeit eine Möglichkeit (z.B. ein System Property), um einen geeigneten Ort für das Speichern einer solchen Datei herauszufinden?
- Das mit den Pfadangaben auf der Suche nach Ressourcen ist wohl ein oft gehörtes Problem. Ich verstehe, dass in jars nur per "getResource()" nach Ressourcen gesucht werden kann und habe das Programm entsprechend angepasst. Ziemlich verwirrt bin ich nun aber bezüglich der Frage, ob die Pfadangaben in der Entwurfsversion in Eclipse grundsätzlich anders sein müssen als letztlich im jar. Für Letzteres sehe ich immer wieder Pfadangaben mit einem vorangestellten "/", weiß aber nicht, warum. Gibt es also die Möglichkeit in Eclipse eine Version zu erstellen und die dann unverändert in ein jar zu packen, oder muss ich vor dem Packen erst noch an den Pfadangaben etwas verändern?
Für Eure Aufmerksamkeit und Hilfe schon an dieser Stelle herzlichen Dank. Wenn Ihr eine Quelle wisst (gerne auch ein Buch), wo ich mich (wie etwa auf der sun-Page) grundsätzlich über solche jar-Bezogenen Fragen informieren kann, wäre das auch sehr hilfreich.
Alles Gute,
Martin
ich habe ein paar grundsätzliche Fragen zum Thema jar, über die ich mir jetzt schon ziemlich lange den Kopf zerbreche. Es gibt zwar über das Thema allgemein erfreulich viel an Material, aber das, um was es mir geht, ist irgendwie bisher nicht dabei gewesen.
Ich habe ein Java-Programm als jar auf eine CD-ROM gepackt und starte das Ganze mit einer Batch-Datei (und Autostart unter Windows). Das funktioniert auch soweit. Aber...
Während des Programmablaufs soll der Benutzer die Möglichkeit bekommen, bestimmte Daten in einer Datei zu speichern (Spielstände, Bestenliste etc.), die dann auch dauerhaft auf der Festplatte steht. Unter Eclipse klappt das auch, ich schreibe die relevanten Daten zunächst in ein Objekt und serialisiere dieses dann in eine ".ser"-Datei. Das Problem ist nun aber, dass sich auf der CD-ROM ja nur ein jar befindet, und in diesem weiteren Zusammenhang habe ich nun folgende Fragen:
- Was genau passiert, wenn das .jar von der CD-ROM gestartet wird? Extrahiert der Klassenlader die ".class"-Dateien einfach und führt sie ohne weitere Umschweife aus? Oder wird irgendwo auf der Festplatte so etwas wie ein Ausführungsverzeichnis angelegt, in dem sich dann auch zum Beispiel eine Datei mit Spielständen sinnvoll anlegen ließe? Wenn etwas auf der Festplatte angelegt wird - ist das dann eine Kopie des jars von der CD-ROM oder eine entpackte Version? Die Frage ist für mich (außer bloßem Interesse) deshalb wichtig, weil sich der Umgang mit Streams ja im Falle eines jars anders gestaltet als bei nicht komprimierten Programmen. Falls beim Ausführen nichts auf der Festplatte angelegt wird - gibt es zur Laufzeit eine Möglichkeit (z.B. ein System Property), um einen geeigneten Ort für das Speichern einer solchen Datei herauszufinden?
- Das mit den Pfadangaben auf der Suche nach Ressourcen ist wohl ein oft gehörtes Problem. Ich verstehe, dass in jars nur per "getResource()" nach Ressourcen gesucht werden kann und habe das Programm entsprechend angepasst. Ziemlich verwirrt bin ich nun aber bezüglich der Frage, ob die Pfadangaben in der Entwurfsversion in Eclipse grundsätzlich anders sein müssen als letztlich im jar. Für Letzteres sehe ich immer wieder Pfadangaben mit einem vorangestellten "/", weiß aber nicht, warum. Gibt es also die Möglichkeit in Eclipse eine Version zu erstellen und die dann unverändert in ein jar zu packen, oder muss ich vor dem Packen erst noch an den Pfadangaben etwas verändern?
Für Eure Aufmerksamkeit und Hilfe schon an dieser Stelle herzlichen Dank. Wenn Ihr eine Quelle wisst (gerne auch ein Buch), wo ich mich (wie etwa auf der sun-Page) grundsätzlich über solche jar-Bezogenen Fragen informieren kann, wäre das auch sehr hilfreich.
Alles Gute,
Martin