# Wo Programminterne Einstellungen speichern ?



## donchris (13. Aug 2008)

Wo sollte man die Einstellungen von Java Programmen speichern ?

Also ich komme von der M$-Programmierung und da sagt man immer entweder registry (Die aber zumüllt) oder xml files, da ini veraltet und nicht mehr brauchbar sei. dat und Minidatenbanken sind auch keine Lösung da sie entweder nicht plattformunabhängig oder eine veraltete Struktur aufweisen.

Da ich aber plattformunabhängig programmieren möchte ist es nicht möglich auf die registry zu setzen. Nun wir aber auch xml zu einem Problem. WO soll denn diese Datei gespeichert werden ? Wenn man nicht weiß bei welchen OS man sich gerade bewegt kann man eigentlich die Datei nur im selben Ordner wie die jar speichern (oder?!) und dies ist doch nicht die beste Art (so könnte man es schaffen den Desktop zu zumüllen).

Kann man also direkt in der *.jar speichern ? Es gibt bei eclipse eine automatisch generierte xml (application-client.xml) kann man die selbst erweitern und aus dem Programm aus verändern ? - wird dies überhaupt empfohlen ? 

mfg
donchris


----------



## Mark110 (13. Aug 2008)

solche dinge skann man in einer property datei speichern


----------



## Beni (13. Aug 2008)

Die Preferences - die man über eine Preferences.userRoot/systemRoot bekommt - sind ein guter Platz um Einstellungen zu speichern. Die können entweder per User, oder für das ganze System gespeichert werden.


----------



## donchris (13. Aug 2008)

Ich habe jetzt die Lösung mit der property Datei versucht, doch wo (bei eclipse) muss man diese Datei genau speichern, damit sie gefunden wird ?


----------



## musiKk (13. Aug 2008)

Du kannst dir ja mal JFig anschauen, da haste gleich mehreres unter einem Hut. Apache Commons hat sicher auch was.

Ich finds uebrigens lustig, wenn erst gesagt wird, dass das ini-Format nicht maechtig genug sei und dann das properties-Format empfohlen wird, welches kaum Aussagekraft hat. Bei den properties darf man sich seine Namespaces durch die Punkttrennung muehsam und vor allem unflexibel verwalten, bei ini gehts ganz einfach. Aber das nur nebenbei.

Als Speicherort wuerde ich den Ordner des jars nehmen, wenn du die Anwendung nur selbst nutzt. Verschickst du sie an Kunden, dann helfen dir wahrscheinlich die Methoden von Beni, da kann ich leider nichts zu sagen. Weiterhin kannst du die Einstellungen natuerlich auch im jar selbst ablegen, dann kannst du sie allerdings nur noch lesen und nicht mehr veraendern.


----------



## donchris (13. Aug 2008)

Also ... ini und properties sind eigentlich ziemlich ident, doch nach reichlichen Überlegungen war mein wichtigstes Kriterium einfach nur ein paar Variablen speichern zu können.

Ich bin gerade an meinem ersten Java Programm, dass Webseitenstatistiken usw. anzeigen soll. Eigentlich ist es als eine Desktoperweiterung von awstats gedacht und daher müssten nur einige wenige Werte gespeichert werden.

Nun werde ich noch einmal eine Frage stellen: Wie kann man am einfachsten plattforübergreifend (Wenn möglich direkt in der jar) Strings ablegen ? (zu beachten: Ich bin Anfänger und verwende eclipse)


----------



## Wildcard (13. Aug 2008)

Der Preference Store den dir Beni vorgestellt hat ist die einfachste Möglichkeit. Ein Kinderspiel zu benutzen.


----------



## donchris (13. Aug 2008)

Was meinst du mit Der Preference Store ? JFig ?

Ich wollte es nun mit Apache Commons probieren, doch da habe ich das Problem, dass ich das Paket nicht zu eclipse hinzufügen kann. Anscheinend muss man es entweder selbst compilieren, oder ich lade immer nur den source code runter.

Ich weiß, dass ich oft auf der Leitung stehe, aber ich schreibe nicht um sonst in den Anfänger-Bereich ^^


----------



## Wildcard (13. Aug 2008)

Nein, das:


			
				Beni hat gesagt.:
			
		

> Die Preferences - die man über eine Preferences.userRoot/systemRoot bekommt - sind ein guter Platz um Einstellungen zu speichern. Die können entweder per User, oder für das ganze System gespeichert werden.


----------



## donchris (14. Aug 2008)

Ich komme immer noch nicht weiter. Ich habe jetzt eine Anleitung aus Java ist auch eine Insel 7 verwendet, doch bei mir wird immer userRoot() unterwellt, obwohl ich alle Pakete eingebunden habe.

Die Datei Preferences.java liegt in org.awiFace.prefs


```
package org.awiFace.prefs;

import java.io.ByteArrayOutputStream; 
import java.util.Enumeration; 
import java.util.prefs.*;  

public class Preferences {

	  static Preferences prefs = Preferences.userRoot().node( "/org/awiFace" ); 
	
	public Preferences() {
		}
}
```

Fehlermeldung: 
The method userRoot() is undefined for the type Preferences	Preferences.java	awiFace/appClientModule/org/awiFace/prefs	line 9	Java Problem


----------



## Wildcard (14. Aug 2008)

Nenn deine Klasse nicht auch Preferences  :roll:


----------



## donchris (14. Aug 2008)

.. upps ^^


----------

