Umgebungsvariable setzten

MScalli

Erfahrenes Mitglied
Hi Leutz.
Ich will mittels Java eine bestehende Umgebungsvariable setzten.
Es reicht wenn diese während der Laufzeit des Programms geändert bleibt.

Eigentlich müsste es doch so gehen

Code:
// setzten der Umgebungsvariablen DATABASE_TYPE
if(DATABASE_TYPE.equals("PGSQL")){
	    System.out.println("in PGSQL");
	   System.setProperty("DATABASE_TYPE", "PGSQL");
}
if(DATABASE_TYPE.equals("MSSQL")){
	  System.out.println("in MSSQL");
	  System.setProperty("DATABASE_TYPE", "MSSQL");
}

// anzeigen des wertes
System.out.println(System.getenv("DATABASE_TYPE"));

leider geht es NICHT.
Ich habe die Variable per hand erstellt und erst mal "test" als wert eingetragen.

-Ich komme in die IF-Bedingung rein(z.B. "in MSSQL" wird angezeigt.
-Ich bekomme KEINE Fehlermeldung!!
-Wenn ich mir den Inhalt der Variablen anzeigen lasse steht der voreingestellte wert "test" drin

kann mir jemand nen tip geben

gruss
MScalli
 
Hi MScalli,
die Routine System.setProperty() ist unabhängig von den Umgebungsvariablen, die über das Betriebssystem gespeichert werden. Hier werden bestimmte Eigenschaften (z.B. user.dir) für die VM gespeichert. Man kann diese Properties entweder programmatisch verändern bzw. erweitern mit System.setProperty() oder über den VM aufruf im Aufrufscript mit java -Dmeine.variable=lalala mein.programm aber sie sind zunächst von Umgebungsvariablen unberührt, es sei den man "verknotet" sie miteinander im Aufrufscript, das wäre jedoch di eRichtung di eDu hier vermutlich nicht möchtest (Betriebssystem->Java-Programm)
Du Kannst aber in Deinem Programm mit System.getProperty(key) die gesetzte Property lesen, die Du in Deinem gezeigten Codeschnipsel gesetzt hast.
 
Zuletzt bearbeitet:
ups.. problem ;)

mein Programm greift noch auf viele kleinere Cobol-Programme zu, deswegen müsste ich die Umgebungsvariable so setzten das sie für andere Programme auch festgelegt ist!!

Solange noch nicht alles in Java ist(das kann schon noch dauern) bin ich sowieso an windows gebunden, also wär das nicht soo schlimm.
Habs schon mit Runtime versucht, aber das will auch nicht.. Wäre es so fest gesetzt
Also wenn es gehen würde!

Code:
Runtime.getRuntime().exec("cmd SET DATABASE_TYPE=MSSQL")

weiss jemand rat, heisst wie kann ich es fest eintragen!
 
Kannst du nicht einfach eine Text-Datei nehmen und deine Werte dort hineinschreiben?
Mit Cobol kannste doch problemlos TextDateien auslesen...
Ein dauerhaftes ändern einer Umgebungsvariable geht glaube ich nicht mit Java.
 
wenn's unbedingt die UMGEBUNGSVARIABLE sein soll, evtl. gibbet ja sowas wie:

Runtime.getRuntime().exec("CHANGEENV.EXE DATABASE_TYPE=MSSQL")
 
Zuletzt bearbeitet:
Nur Probleme mit der Umgebungsvariable.
wenn ich mit Eclipse e und die Umgebungsvariable verändere dann wird das ni9cht angenommen. Erst wenn ich Eclipse schliesse und neu öffne.
So ein kutt ..

das Thema Umgebungsvariablen ist für mich somit vom Tisch^^

wieso einfach wenns umständlich auch geht :)
werd den Datenbank-Typ einfach immer mit übergeben und beseitige somit ne masse potenzieller Fehlerquellen!!

Trotzdem vielen Dank an alle Helfer!!
 
Zurück