Vorlagen mit in die .jar?

MetroAffe

Mitglied
Moin,

mich interessiert es mal ob man Dateien die für das Programm verwendet werden direkt mit in die Jar-Datei packen kann und diese dann auch von Programm aus nutzen kann.

So gibt es in meinem derzeitigen Projekt zB. mehrere "Template" Pdf´s die dann mit iText und co bearbeitet werden und in einem Benutzerverzeichnis gespeichert werden - aktuell werden diese Templates von einem externen Ordner bezogen, was natürlich schlecht ist da es eine Fehlermeldung gibt wenn man es auf einem anderen PC benutzt oder den Ordner verschiebt


Hoffe ich hab mein Problem gut beschrieben

Danke schonmal :p
 
Hi MetroAffe,

natürlich kann man das :)
Dafür kannst du folgendes nutzen:
Java:
InputStream input = getClass().getResourceAsStream("/classpath/to/my/file");

"/" gibt hier einen absoluten Pfad zum JAR-Archiv an.

Wenn du die Dateien in die JAR packst, wird es dann allerdings komplizierter, wenn du es dem Nutzer erlauben möchtest, die Templates zu editieren.
 
wow das ging schnell - ich probiers gleich mal aus ... mit dem editieren hast du recht aber das wird auch nicht nötig sein.

Danke ;D
 
OK - Funktioniert einwandfrei :D

Was mich jetzt allerdings noch Interessieren würde: Sollte bzw wäre es in Ordnung auch eine Datenbank mit in die Jar einzubinden, auf die zugegriffen und die bearbeitet wird?
 
Das wiederum geht nicht. Dateien einer ausgeführten Jar können nicht bearbeitet werden, dafür müsste man dann gegebenenfalls eine zusätzliche Jar mitliefern. Aber selbst dann ist das nicht so ohne, weil man nicht so einfach in Archive schreiben kann. Man müsste die Datenbank dann aus der Jar extrahieren, z.B. in ein Temp-Verzeichnis, dort alles machen, was man machen will und dann wieder eine völlig neue Jar packen.

Im Normalfall würde ich eher folgende Vorgehensweise bevorzugen. Alle Ressourcen, die die Anwendung braucht, in die Anwendungs-Jar oder eine zweite Jar packen und von der Anwendung nach
Code:
System.getProperty("user.home")/.meineanwendung/
extrahieren, jedenfalls Ressourcen, die man bearbeiten möchte, wie z.B. so eine Datenbank. Ressourcen, die lediglich verwendet werden, wie z.B. Icons, können ruhig weiterhin aus den Jars geladen werden.
 
[...] dort alles machen, was man machen will und dann wieder eine völlig neue Jar packen.
Das stimmt so nicht ganz, man kann in der Tat JAR-Dateien aktualisieren, siehe hier: Updating a JAR File.

Aber ich würde auch lieber die Dateien entweder im Benutzerordner - wie es Akeshihiro vorgeschlagen hat - speichern, oder im selben Ordner wie die .jar-Datei, sodass man bereits eine portable Version hat.
 
Was ich meinte war an der Jar rumschrauben, die gerade von der JVM gesperrt ist, weil es die Anwendung selbst ist. An der kann man nichts aktualisieren, solange die JVM läuft und sie daher blockiert. Das könnte man höchstens mit einer zweiten machen und ja, hab ich mich etwas doof ausgedrückt. Man muss keine neue Jar erstellen, man kann die bestehende aktualisieren, das meinte ich damit aber auch. Jedenfalls darf es nicht die der Anwendung selbst sein.
 
OK, klingt alles gut und logisch, werde das so umsetzten.

Eine frage bleibt aber ... wieso funktioniert es, die Datenbank mit in die JAR zu packen, solange man das Programm über Eclipse laufen lässt?
 

Neue Beiträge

Zurück