Hi,
in Java bekomme ich via System.getProperties() ein paar Systeminformationen heraus.
Aber eigentlich wollte ich die Envirnment-variablen abfragen.
Unix: env.
Hat das schon jemand gemacht ? Oder geht das gar nicht ?
Hi,
in Java bekomme ich via System.getProperties() ein paar Systeminformationen heraus.
Aber eigentlich wollte ich die Envirnment-variablen abfragen.
Unix: env.
Hat das schon jemand gemacht ? Oder geht das gar nicht ?
Hab da mal ins richtige Forum verschoben
Leider kann ich dir beim Problem nicht weiterhelfen.
System.getenv ist deprecated, ein Testprogramm hat einen ajav.lang.Error geworfen, als ich es ausprobiert habe
Unter Unix könnte man versuchen, env in einem Kindprozess auszuführen und dann den Output zu parsen.
Ciao,
_
Qt/KDE Entwickler
Debian Benutzer
Hi anda_skoa,
System.getenv ist durch System.getProperties ersetzt worden. Es werden jedoch nicht die envirnment-variablen vom System sondern die Java-Settings und ein paar Systeminfos (sun.cpu.isalist=pa2.0,file.encoding.pkg=sun.io,.. ) zurückgegeben.
Ich werde deinem Tip mit der Umleitung eines systemkomandos mal nachgehen.
Vielleicht komm ich da weiter.
Danke erst mal.
Grüsse Mike
Hi
ich hab mittlerweile einen Workaround gefunden. Ist aber alles andere als eine saubere Lösung. Ich hoffe jemand von euch hat noch eine elegantere Lösung parat.
import java.lang.Runtime;
in getenv.ksh isCode:Runtime rt = Runtime.getRuntime(); String[] callAndArgs = { "getenv.ksh" }; Process child = rt.exec(callAndArgs); child.waitFor(); BufferedReader envin= new BufferedReader( new FileReader( "env.log" ) ); String s; while ( ( (s=envin.readLine()) != null) ) { configline( s ); } envin.close();
Das gefällt mir zwar nicht, aber es funktioniert.Code:env > env.log
Grüsse
Mike
Vielleicht könnte man env direkt ausführen und mit Process.getInputStream von dessen stdout lesen.
Irgendwie so:
Ciao,Code:Process child = rt.exec("env"); BufferedReader envin = new BufferedReader(child.getInputStream()); String s; while ( ( (s=envin.readLine()) != null) ) { configline( s ); } envin.close();
_
Qt/KDE Entwickler
Debian Benutzer
Hi anda_skoa,
ich hab das mit dem InputStreamReader hingekriegt.
Die Lösung gefällt mir auch bedeutend besser als der Umweg via Script.Code:BufferedReader envin = new BufferedReader( new InputStreamReader(child.getInputStream()));
Das ganze läuft übrigens auf einer HP-UX 11. Da zeigt Java mit der Plattformunabhängigkeit echt seine Stärken.
Danke nochmal für den Tip.
Grüsse
Mike
Lesezeichen