Systemvariablen lesen und schreiben?

Hi,

ich würde gerne die System- und User-Variablen auslesen bzw. setzen können.

(in Windows setze ich die ja entweder in der System-Steuerung oder im DOS-Promt mit
set VARIABLE=Wert

Gibt es da etwas?

Besten Dank

Winni

Hallo Winni,

System.getProperty(„MeinWert“);

System.setProperty(„MeinWert“, „Hallo“);

Viele Grüsse
Simon

Naja, wenn ich

System.out.println(System.getProperty(„JAVA_HOME“));

aufrufe, wird statt des Pfades null zurückgegeben.

Mein Tomcat kann diese aber auswerten.

Ne Idee?

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi,

wenn Du

System.getProperties().list(System.out);

ausprobierst, dann siehst Du alle abfragbaren Systemproperties. JAVA_HOME ist kein Systemproperty, sondern meist eine Umgebungsvariable des Betriebssystems.

Gruss,

Herb

Ja und ich will eben die Betriebssystem-Variablen haben.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Betriebssystemvariablen lesen
Hi,

so auf die Schnelle würd ich es folgendermassen machen:

try
{
 Process proc = Runtime.getRuntime().exec("cmd /c echo %JAVA\_HOME%");
 BufferedReader br = new BufferedReader( new InputStreamReader(proc.getInputStream()) );
 for ( String s; (s = br.readLine()) != null; )
 System.out.println( s );
 }
 catch(IOException iox)
 {
 System.out.println(iox.getMessage());
 }
}

Gruss,

Herb

Hi,

besten Dank, habe nun 2 Möglichkeiten zum LESEN herausgefunden.
(Bei Bedarf kann ich es Dir auch den anderen Ansatz schicken, ist aber etwas größer)

Aber mit dem Schreiben einer SystemVariablen habe ich ein Problem:

rt.exec("cmd /c set TEST=blabla"); 


    
    
    führt nicht zum Ergebnis.
    
    Kennt wer nen Ansatz?
    
    
    
    > Hi,  
    >   
    > so auf die Schnelle würd ich es folgendermassen machen:  
    >   
    > Gruss,  
    >   
    > Herb

Hi,

das Schreiben kann os nicht funktionieren, weil Du das nur für den erzeugten Prozess tust, nicht für das Betriebssystem allgemein.

Wenn Du irgendeine Komponente mit einem Wert versorgen musst, dann solltest Du nach einem anderen Weg suchen. Willst Du zum Beispiel Tomcat von einem Javaprogramm aus starten, dann kannst Du ihm die benötigten Parameter mitgeben. Da ist ein Zugriff auf die Betriebssystemumgebungsvariablen nicht nötig.

Gruss,

Herb

Die Variable wird ja nichtmal über:

rt.exec(„cmd /c set TEST=test“);

rt.exec(„cmd /c set“);

übermittelt :frowning:(

Dann muß ich Wohl die Parameterübergabe über INI-Files machen, oder ne andere Idee?

Vielleicht solltest Du mal sagen, was Du machen willst.
Dann kann ich Dir eine adäquate Lösung vorschlagen.

Gruss, Simon

Hi,

es geht um ein Softwareprojekt, welches von Unix auf Windows portiert werden soll.
Und bisher wurde eben vieles über Prozeßsteuerung und Environment-Variablen gesteuert (es laufen da 4 Applikationen parallel, teilweise aber im „SLEEP“-Modus, was aber nun durch gegenseitige Aufrufe aufbrechbar erscheint)

Werde bei der nächsten Projektgruppensitzung einfach vorschlagen, daß Ini-Files mit übergeben werden, bzw. einiges fest verdrahtet wird und fertig.

Oder hast Du ne bessere Idee?

Vielleicht solltest Du mal sagen, was Du machen willst.
Dann kann ich Dir eine adäquate Lösung vorschlagen.

Gruss, Simon

Ich würde Properties verwenden:
http://java.sun.com/j2se/1.4.2/docs/api/java/util/Pr…

Habe noch was interessantes gefunden:
http://java.sun.com/docs/books/tutorial/essential/sy…
-> Damit kannst Du auch JAVA_HOME (= java.home) lesen!

Viele Grüsse
Simon