# Umgebungsvariable setzen und lesen



## clemson (14. Feb 2005)

hallo!

ich habe folgende frage: ist es in java möglich eine umgebungsvariable zu setzen und deren wert auch nach erneutem program-start zu verwenden?

ich habe ein programm, welches eine konfigurationsdatei ( config.xml ) zum laden der symbole, ... besitzt. ich möchte es jetzt so einstellen, dass der benutzer des programms in den umgebungsvariablen eine neue variable ( beispielsweise "configpath" ) festlegt, und ich dann bei programmstart den wert dieser variable abfrage, und dann die konfig laden kann...


----------



## bambi (14. Feb 2005)

nein, ist glaub' ich nicht moeglich. bei solchen anwendungen muss man sich eben irgendwie anders helfen    wenn das programm gestartet wird, dann arbeitet's natuerlich mit denen dort vorgegebenen werten.

leg' dir doch einfach eine datei an, in der du dann deinen wert speicherst. sowas wie ein properties-file, vielleicht? das kannst du dann einfach auslesen und die werte von dort verwenden...


----------



## clemson (14. Feb 2005)

hmmm....  :? 

so funktioniert es auf jedenfall.. ich hätte nur gerne eine möglichkeit gehabt, dass man den pfad zur config-datei über die system-variablen lesen kann....


ich habe in der API gesucht, und da gibt es die Methoden System.setProperty() und System.getProperty() ... könnten die mir eventuell weiterhelfen? Und ist eine Variable, welche ich mittels System.setProperty() gesetzt habe, auch nach einem erneutem Programm-Start oder Windows-Neustart vorhanden???


----------



## KSG9|sebastian (14. Feb 2005)

mit Runtime.getRuntime.exec("befehl") kannst du cmd-befehle ausführen. über einen umweg bekommst du sicherlich die umgebungsvariablen raus und kannst mit ihnen arbeiten


var setzen:


```
Runtime.getRuntime().exec("SET varname=varwert");
```

Ich glaub aber, wenn ich noch recht weis, dass die Variablen nur temporär gespeichert werden..


----------



## clemson (14. Feb 2005)

aha...

ja, wenn das nur temporär geht, dann ist es leider nicht das was ich gerne hätte....

aber danke trotzdem...


obwohl, da fällt mir gerade ein, dass ich eigentlich nur eine variable lesen möchte... und da kann ich getProperty() verwenden, oder?? und irgendwie abfangen, ob diese variable vorhanden ist und einen gültigen wert besitzt...

also, meine neue frage: kann ich mit System.getProperty() alle Umgebungsvariablen aus den SystemEigenschaften holen, oder nur bestimmte???


----------



## flasher008 (14. Feb 2005)

KSG9|plak hat gesagt.:
			
		

> Ich glaub aber, wenn ich noch recht weis, dass die Variablen nur temporär gespeichert werden..



Ja, mit SET werden die Variablen nur temporär gespeichert. Für das dauerhafte Speichern der Systemvariablen bietet Windows den Befehl "SETX" an. Ich würde Dir allerdings auch den vorher genannten Weg empfehlen, da Du für das Setzen der Systemvariablen immer als Administrator arbeiten müsstest bzw. Deine User alle Admins sein müssten.


----------



## Bleiglanz (15. Feb 2005)

```
Runtime.getRuntime().exec("SET varname=varwert");
```
völlig sinnlos, wenn dieser aufruf zurückkehrt, dann ist die Variable im Nirvana verschwunden

=> Es gibt keine gute ;öglichkeit, Environment-Variablen einer "umgebenden" Shell auszulesen (die gibts ja vielleicht gar nicht...)


----------



## clemson (15. Feb 2005)

Aber mit getProperty kann ich Umgebungsvariablen auslesen, oder??


----------



## KSG9|sebastian (15. Feb 2005)

@bleiglanz: ja, hab ich ja dazu geschrieben


----------



## Bleiglanz (15. Feb 2005)

@KSG9|plak

ja hast du geschrieben 

aber warum? die code zeile ist doch äquivalent zu einem no-op??


----------

