Daten in JAR speichern geht nicht??

Status
Nicht offen für weitere Antworten.

DStrohma

Bekanntes Mitglied
Hi Leute,

erst einmal, was habe ich vor: Ich will eine portable JAR-Datei erstellen, die ohne zusätzliche Dateien auskommt. Also nur aus der einen JAR besteht und alle Einstellungen intern speichert. Jetzt muss aber der User gewisse Einstellungen speichern können die beim nächsten Start der JAR erhalten bleiben.

Ich dachte mir das mach ich über eine Properties-Datei die ich dann in der JAR speichere, musste aber rausfinden dass es nicht möglich ist während die JAR ausgeführt wird Daten darin zu speichern - es geht nur lesen... :-/

Zweite Idee war dann die Klasse Preferences. Da hab ich jetzt aber gelesen dass die Daten die ich da reinspeichere irgendwo auf der Festplatte gespeichert werden. Da meine Anwendung portabel sein muss fällt das auch raus.

IST ES ETWA NICHT MÖGLICH??

Danke für eventuelle Ideen
 
Zuletzt bearbeitet:

Wildcard

Top Contributor
Möglich schon, aber nicht auf allen Plattformen. Windows zum Beispiel locked per Default alle Dateien aus denen gelesen wird (dein jar beim ausführen), also ist es auf Windows schonmal nicht möglich das sich dein jar selbst updated.
Davon abgesehen ist soetwas immer eine schlechte Idee. Was passiert bei einem Absturz oder IO Fehler? Dann hat sich dein Programm selbst zerstört.
 
S

Spacerat

Gast
Was ist denn an einer Preferences-Klasse auszusetzen? Das so ein Teil Dateien "irgendwo auf der Platte" speichert, kann man kaum ernst nehmen. In Java hat man doch Möglichkeiten relative Dateipfade selbst anzulegen. Als Basis könnte man z.B. bei "System.getProperty("user.dir")" (oder ähnlich... :) ) nehmen. Java kommt auch afaik in allen Betriebssystemen mit dem Slash ("/") als Verzeichnistrennzeichen klar. Man kann sogar das Verzeichnis der gerade ausgeführten Jar-Datei, wenn auch nicht direkt (führt über "getClass().getRessource()"), bekommen.
 
Zuletzt bearbeitet von einem Moderator:

DStrohma

Bekanntes Mitglied
Was ist denn an einer Preferences-Klasse auszusetzen? Das so ein Teil Dateien "irgendwo auf der Platte" speichert, kann man kaum ernst nehmen. In Java hat man doch Möglichkeiten relative Dateipfade selbst anzulegen. Als Basis könnte man z.B. bei "System.getProperty("user.dir")" (oder ähnlich... :) ) nehmen. Java kommt auch afaik in allen Betriebssystemen mit dem Slash ("/") als Verzeichnistrennzeichen klar. Man kann sogar das Verzeichnis der gerade ausgeführten Jar-Datei, wenn auch nicht direkt (führt über "getClass().getRessource()"), bekommen.

Das hab ich derzeit so. Nur ich wollte es eben in der .JAR haben...
Damit es portabel ist. Die Preference Klasse speichert die Informationen soweit ich das herausgefunden hab in einer Datei auf der Platte aber wenn ich die .JAR auf einen anderen Computer kopiere, dann muss die wieder neu angelegt werden. Ich kann da also keine Informationen reinpacken die ich auslesen will.
Aber Wildcard's Argumente geben mir zu denken :)
 

The_S

Top Contributor
Dann schreib doch ne Export und Import Funktion für die Dateien. So kann man die Daten mitnehmen. Außerdem ist es doch normal, dass auf einem anderen Rechner andere Daten vorhanden sind, oder nicht ???:L ?
 

DStrohma

Bekanntes Mitglied
Dann schreib doch ne Export und Import Funktion für die Dateien. So kann man die Daten mitnehmen. Außerdem ist es doch normal, dass auf einem anderen Rechner andere Daten vorhanden sind, oder nicht ???:L ?

ich will aber interne daten des programmes speichern... die sollten doch bitte auf jedem computer die gleichen sein. es geht um sachen wie den pfad den ein user festlagen kann um von dort weitere daten zu holen, die ausrichtung und größe der fenster usw.
wenn ich das mit der klasse Preferences mach und das programm auf einen anderen rechner installiere, sind diese vorher eingestellten daten weg. es scheint also nicht anders zu gehen als die benötigsten daten in eine extra datei auszulagern (genau das wollte ich vermeiden aber es geht dann wohl doch nicht)
 

The_S

Top Contributor
es geht um sachen wie den pfad den ein user festlagen kann um von dort weitere daten zu holen, die ausrichtung und größe der fenster usw.

Das finde ich ja noch weitaus unlogischer! Warum sollte der Pfad auf jedem Rechner gleich sein? User A legt diesen "Pfad" auf sein X-Laufwerk. User B hat aber kein X-Laufwerk, das Programm verweist aber trotzdem darauf ... Sinn? Genauso die Ausrichtung und Größe der Fenster. User A hat eine Displayauflösung von 2560x1600 und macht die Anwendung auf Vollbild. User B hat eine Displayauflösung von 1024x768 - das Fenster ist viel zu groß. Ähnliches mit der Positionierung der Fenster.

Und wenn du die Datei "extern" speicherst, musst du sie trotzdem (auch wenn es sinnlos ist) überall mit hin schleifen. Da kannste auch genauso gut Preferences mitsamt Import und Export Funktion anbieten.
 

DStrohma

Bekanntes Mitglied
hab mich wohl undeutlich ausgedrückt:

alle daten die der benutzer einstellt, sollen so sein wie er sie eingestellt hat. macht keinen sinn? egal, is einfach so :)
ich nehme dabei an, dass ein und der gleiche benutzer die .jar auf verschiedenen rechnern verwendet und die daten immer dabei hat. (wenn ich das mit Preferences mach, sind die daten weg wenn ein anderer rechner benutzt wird).

die daten sollen natürlich auch änderbar sein...
das geht nicht anders als es in eine datei zu packen und es irgendwo abzuspeichern. genau das wollte ich nicht, ich wollt's direkt in die .jar, das geht aber nicht also problem erledigt :))

(hängt euch nicht an werten wie 'auflösung' oder 'pfad' auf. das waren lediglich schlechte beispiele. mir geht es um optionen wie "windows effekte ein/aus", "verwendetes LAF", usw... und das stichwort heißt eben "portabel". geht nicht mit preferences)

PS: wie kann ich den thread als "erledigt" deklarieren?

und DANKE für all die antworten
 
Zuletzt bearbeitet:

The_S

Top Contributor
"Portable" Applikationen speichern ihre Informationen relativ zu dem Verzeichnis, in dem Sie liegen (meistens ein Verzeichnis auf einem USB-Stick). Die Info hätteste und ruhig vorher zukommen lassen können - und ja, die Beispiele waren verdammt schlecht gewählt. Aber gut, hat sich ja jetzt erledigt :) .
 

DStrohma

Bekanntes Mitglied
"Portable" Applikationen speichern ihre Informationen relativ zu dem Verzeichnis, in dem Sie liegen (meistens ein Verzeichnis auf einem USB-Stick). Die Info hätteste und ruhig vorher zukommen lassen können - und ja, die Beispiele waren verdammt schlecht gewählt. Aber gut, hat sich ja jetzt erledigt :) .

ich habs relativ gespeichert, sorry nochmal...
aber ich weis jetzt immer noch nicht wie ich einen thread als 'erledigt' deklariere
 

Painii

Bekanntes Mitglied
ich habs relativ gespeichert, sorry nochmal...
aber ich weis jetzt immer noch nicht wie ich einen thread als 'erledigt' deklariere

Auf "Frage offen" drücken.

Und wenn jeder User seine eigenen Einstellungen für das Programm hat, dann würd ich einfach eine config-datei für jeden User bauen (die er lokal für sich speichert), und die dann beim Programm-start übergeben, damit es damit initialisiert wird.
Ist bestimmt auch der ganze Sinn von Properties, wo ich mich nicht reingelesen hab :D
 

DStrohma

Bekanntes Mitglied
Und wenn jeder User seine eigenen Einstellungen für das Programm hat, dann würd ich einfach eine config-datei für jeden User bauen (die er lokal für sich speichert), und die dann beim Programm-start übergeben, damit es damit initialisiert wird.
Ist bestimmt auch der ganze Sinn von Properties, wo ich mich nicht reingelesen hab :D

jo, so hab ich's jetzt auch.


Aber hoffentlich nicht so!?
Code:
System.getProperty("user.dir")

ich hab da:
Java:
Properties pr = new Properties();
pr.load(new FileInputStream(settingsFilename));

windowEffects = Boolean.parseBoolean(pr.getProperty("Effects"));
decoration = pr.getProperty("Decoration");

usw.
 
Zuletzt bearbeitet:
S

Spacerat

Gast
"Nicht zu empfehlen" ist die falsche Wortwahl. Wenn man Einstellungen einer Anwendung Benutzerbezogen speichern will, empfiehlt sich das sehr. Wenn man aber die Einstellungen systemweit für jeden Benutzer gleich speichern will, müsste man sich das Verzeichnis beschaffen, in welchem die Anwendung installiert wurde. Meines wissens bekommt man das nur (w.g. nicht direkt) über "getClass().getRessource()".
 

DStrohma

Bekanntes Mitglied
Und wo zeigt das SettingFile hin?

ich habs so festgelegt, dass meine settings-file immer im gleichen verzeichniss sein muss wie die ausführbare .jar. also ist bei mir die variable 'settingsFilename' wirklich nur der filename --> 'settings.ini'

und da es ja um eine portable anwendung geht, muss die settings file auch nicht umbedingt existieren, wenn das der fall ist, werden eben standard-einstellungen hergenommen.

ich versteh jetzt endlich worauf ihr hinaus wollt :oops:
ich speicher zwar auch pfade in der settings-file aber keine angst :) ich hab ne eigene klasse die mir die relativen pfade erstellt und die settings-file selbst braucht gar keinen pfad.
 
Zuletzt bearbeitet:

The_S

Top Contributor
"settings.ini" verweist aber auf das Ausführungsverzeichnis, was nicht zwingend identisch mit dem Verzeichnis sein muss, in welchem sich das JAR befindet. Das nur zur Info für dich.
 

DStrohma

Bekanntes Mitglied
"settings.ini" verweist aber auf das Ausführungsverzeichnis, was nicht zwingend identisch mit dem Verzeichnis sein muss, in welchem sich das JAR befindet. Das nur zur Info für dich.

doch die befindet sich zwinged in dem gleichen verzeichniss. das is so festgelegt.
hab meinen letzen post noch erweitert aber scheinbar zu spät :)
ihr antwortet zu schnell :bae:
 

The_S

Top Contributor
doch die befindet sich zwinged in dem gleichen verzeichniss. das is so festgelegt.

äh ... ja ... und wer legt das fest? Ich glaube du hast meine Aussage missverstanden!

Wenn du in deinem Programm auf die Datei "settings.ini" (ohne Pfadangabe) zugreifst, dann schaut Java nicht in das Verzeichnis, in dem die JAR-Datei liegt, und sucht die "settings.ini"-Datei, sondern in das Ausführungsverzeichnis, von welchem das JAR ausgeführt wurde (was meistens mit dem Verzeichnis, in welchem sich die JAR befindet übereinstimmt, aber eben nicht immer).
 
B

bygones

Gast
ums nochmal kurz zu erklaeren:
Java:
public class Foo {
    public static void main(String[] args) {
        System.out.println(System.getProperty("user.dir"));
    }
}
als jar gepackt und nach [c]/tmp[/c] gelegt.

Im /tmp verzeichnis gestartet ueber [c]java -jar test.jar[/c] wird auch /tmp ausgegeben.... wechselt man nun in ein anderes verzeichnis zB [c]/home/user/theUser[/c] und startet [c]java -jar /tmp/test.jar[/c] wird /home/user/theUser ausgegeben....

wens interessiert ;-)
 

The_S

Top Contributor
ums nochmal kurz zu erklaeren:
Java:
public class Foo {
    public static void main(String[] args) {
        System.out.println(System.getProperty("user.dir"));
    }
}
als jar gepackt und nach [c]/tmp[/c] gelegt.

Im /tmp verzeichnis gestartet ueber [c]java -jar test.jar[/c] wird auch /tmp ausgegeben.... wechselt man nun in ein anderes verzeichnis zB [c]/home/user/theUser[/c] und startet [c]java -jar /tmp/test.jar[/c] wird /home/user/theUser ausgegeben....

wens interessiert ;-)

Genau das ist das, was ich meinte. Ich war nur zu faul es so ausführlich zu erklären :D
 

DStrohma

Bekanntes Mitglied
äh ... ja ... und wer legt das fest? Ich glaube du hast meine Aussage missverstanden!

Wenn du in deinem Programm auf die Datei "settings.ini" (ohne Pfadangabe) zugreifst, dann schaut Java nicht in das Verzeichnis, in dem die JAR-Datei liegt, und sucht die "settings.ini"-Datei, sondern in das Ausführungsverzeichnis, von welchem das JAR ausgeführt wurde (was meistens mit dem Verzeichnis, in welchem sich die JAR befindet übereinstimmt, aber eben nicht immer).

hmm, hast recht, habs grad mit ner .bat probiert und der sucht die file dann in dem verzeichniss... ok :oops: is nicht weiter schlimm da dann die standart-einstellunge verwendet werden aber ja, is 'n bug. ich korrigiers. DANKE!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Schnelleres Speichern von XML-Daten über URLConnection Allgemeine Java-Themen 4
Q-bert Daten von Java Programm speichern Allgemeine Java-Themen 4
K Große Mengen an Daten speichern Allgemeine Java-Themen 9
J Daten persistent speichern Allgemeine Java-Themen 14
K Input/Output Daten speichern / laden Allgemeine Java-Themen 2
M Best Practice: Daten aufnehmen-speichern-bereitstellen Allgemeine Java-Themen 8
L Speichern von Daten in JKS Allgemeine Java-Themen 5
C Daten speichern und verwalten Allgemeine Java-Themen 3
A Java Projekt (Daten Eingeben, Speichern und in Listen Ausgeben) Allgemeine Java-Themen 6
D (Viele) Daten performant speichern und lesen Allgemeine Java-Themen 5
G Excel-Daten in Datenbank speichern - Problem mit leeren Feldern Allgemeine Java-Themen 7
I daten dauerhaft speichern Allgemeine Java-Themen 17
H2SO3- speichern von Daten in seeeeeehr großen Tabellen (nicht DB) Allgemeine Java-Themen 8
J Daten bei dem Benutzer speichern Allgemeine Java-Themen 6
E Nicht Business-Logik Daten also Einstellungen wo speichern? Allgemeine Java-Themen 2
DEvent grosse daten speichern Allgemeine Java-Themen 2
R Daten Speichern Allgemeine Java-Themen 6
Q Speichern & Wiederherstellen von Daten (-objekte) Allgemeine Java-Themen 7
G Daten aus einer For Schleife zwischen speichern Allgemeine Java-Themen 4
S Einlesen von Daten aus .txt Dateien und speichern in Variabl Allgemeine Java-Themen 3
M Daten Speichern Allgemeine Java-Themen 6
I Mehrere Klassen mit den selben Daten Allgemeine Java-Themen 5
padde479 Collections Daten in Dreiecksform Allgemeine Java-Themen 13
V Umgang mit fehlenden Daten in einer Java-Datenanalyseanwendung Allgemeine Java-Themen 5
torresbig Url nach Webseiten-Login auslesen & Daten an Webseite senden Allgemeine Java-Themen 9
A Hartgecodete Daten auslagern Allgemeine Java-Themen 4
F Laden von bestimmten Daten aus TAR Archiv Allgemeine Java-Themen 23
S Webservices für binäre Daten? Allgemeine Java-Themen 5
OnDemand Daten in RAM zwischenspeichern oder lieber aus DB holen? Allgemeine Java-Themen 24
J Daten über serielle Schnittstelle empfangen Allgemeine Java-Themen 4
J JSON Daten von einer Webseite erhalten Allgemeine Java-Themen 2
S Entities aus XML - Daten. Allgemeine Java-Themen 1
kodela Klasse mit "gezipten" Daten Allgemeine Java-Themen 6
M Daten aus MatLab Datei lesen Allgemeine Java-Themen 8
N Daten einer JCoTable in JTextArea anzeigen Allgemeine Java-Themen 7
kodela Klassen Klasse "vergisst" ihre Daten Allgemeine Java-Themen 2
C Daten für Klassifikationsverfahren gewinnen Allgemeine Java-Themen 6
J Daten von Quelltext Allgemeine Java-Themen 5
K OOP Daten addieren sich bei GUI-Eingabe Allgemeine Java-Themen 10
J Jasper Reports - Daten vom Hoster Allgemeine Java-Themen 2
kodela Daten während Laufzeit zugriffsbereit Allgemeine Java-Themen 15
J Millisekunde zwischen 2 Daten Allgemeine Java-Themen 6
Q Selbständig ActionEvent auslösen zum Daten senden über serielle Schnittstelle Allgemeine Java-Themen 7
J Daten aus Website-Quelltext auslesen Allgemeine Java-Themen 62
R Android Daten online senden Allgemeine Java-Themen 0
P Datenbank-MiniGUI fügt keine Daten ein Allgemeine Java-Themen 4
K Gespeicherte Daten von einer LinkedList auf vier LinkedList verteilen Allgemeine Java-Themen 6
K Datei (CSV-ähnlich) in Java einlesen & mit teil der Daten Graphen erstellen Allgemeine Java-Themen 9
A Erste Schritte Daten aus einer Website auslesen Allgemeine Java-Themen 7
OnDemand Desktop-Applikation schreiben, wie daten persistent? Allgemeine Java-Themen 9
S Erste Schritte Fehlender Gedanken-Ansatz bei Interpretation von Daten Allgemeine Java-Themen 1
J Auslesen Daten Java/HTML Allgemeine Java-Themen 15
D Daten in MySQL-Datenbank schreiben Allgemeine Java-Themen 13
A Swing FileWriter schreibt keine Daten in Datei Allgemeine Java-Themen 13
M Daten aus anderen Programmen auslesen Allgemeine Java-Themen 2
D Best Practice Login-Daten: Wie am besten abrufen? Allgemeine Java-Themen 6
L Best Practice Log Dateien analysieren und eventuell passende Daten am Chart darstellen Allgemeine Java-Themen 1
J Serial Port Daten empfangen Allgemeine Java-Themen 5
H Daten via COM Schnittstelle erhalten Allgemeine Java-Themen 2
S Allgemeine parallelisierte Loesung um Daten im Hintergrund zu laden..? Allgemeine Java-Themen 6
L Daten ohne Datenbank richtig abspeichern Allgemeine Java-Themen 5
G Daten aus Website auslesen Allgemeine Java-Themen 7
J Daten aus GUI auslesen und in Objekte umwandeln Allgemeine Java-Themen 6
O Serial Port Daten als Tastaturanschlag senden Allgemeine Java-Themen 0
N Zeitabstand zwischen 2 Daten(Mehrzahl von Datum) Allgemeine Java-Themen 3
T Input/Output Daten in eine Datei schreiben Allgemeine Java-Themen 4
Z daten bindung Allgemeine Java-Themen 1
A Datentypen Gregorian Calendar - 2 Daten sind gleich?? Allgemeine Java-Themen 3
L Vergleich-Xml-Daten Allgemeine Java-Themen 3
vandread Daten verschlüsseln mit Java oder Datenbank Allgemeine Java-Themen 15
A Daten in Formularen/Vorlagen erstellen und ausdrucken Allgemeine Java-Themen 3
C HtmlUnit Daten einer Tabelle bekommen ohne, dass diese eine ID aufweist Allgemeine Java-Themen 1
T Daten über port abfangen mit proxy server Allgemeine Java-Themen 12
Todesbote Excel Blattschutz aufheben und Daten einfügen Allgemeine Java-Themen 3
T Mit Apache Poi Daten aus einer Excel Tabelle kopieren und in Word einfügen Allgemeine Java-Themen 1
OnDemand PC identifizieren / Daten auslesen Allgemeine Java-Themen 15
G Combobox füllen mit daten aus einer Tabelle Allgemeine Java-Themen 4
J Maven .war enthält veraltete Daten Allgemeine Java-Themen 3
N Daten aus Jar laden Allgemeine Java-Themen 10
P Datentypen String-Daten zu Byte-Zahlen konvertieren - Komme nicht weiter nach vielem versuchen :-/ Allgemeine Java-Themen 7
T Daten effizient verwalten Allgemeine Java-Themen 4
B JTable eigene Daten Add Methode Allgemeine Java-Themen 2
S OOP Apache Commons Math - Verwendung von Genetics - Wie werden Daten in Chromosomen gespeichert? Allgemeine Java-Themen 4
C Daten über URL an PHP verschicken Allgemeine Java-Themen 4
R Daten aus DB auslesen in ein formular (JSP) Allgemeine Java-Themen 13
S Library fuer Internet-Text-Daten-Quellen..? Allgemeine Java-Themen 8
H OOP Daten über TCP Allgemeine Java-Themen 5
H Input/Output Binäre Daten konvertieren, Output hat Zeilenumbrüche?? Allgemeine Java-Themen 9
D Daten eines User auslesen. Allgemeine Java-Themen 5
B Input/Output Einbinden von Daten in Java Allgemeine Java-Themen 3
L Einbinden von Daten in ausführbare Jar Allgemeine Java-Themen 6
N Methoden Einzelne Daten aus "Person" auslesen Allgemeine Java-Themen 3
R SerialPort auslesen und Daten verarbeiten Allgemeine Java-Themen 23
ARadauer Wo liegen die Daten der Preferences Klasse Allgemeine Java-Themen 3
Madlip Erste Schritte Java speichert Daten im Programm?!? Allgemeine Java-Themen 9
S JDialog Daten ins JFrame übergeben Allgemeine Java-Themen 5
F Threads synchronisierung des Zugriffes auf daten Allgemeine Java-Themen 4
O Amazon S3 Anmelden / Daten downloaden Allgemeine Java-Themen 2
A Daten aufbereiten Allgemeine Java-Themen 11
P Daten kopieren mit nio - Zugriff verweigert Allgemeine Java-Themen 8

Ähnliche Java Themen

Neue Themen


Oben