Archiv verlassen und diese Seite im Standarddesign anzeigen : Envirnment-variablen unter Java
Mattburger
09-08-2002, 15:51
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 ?
anda_skoa
09-08-2002, 16:20
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,
_
Mattburger
09-08-2002, 16:39
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
Mattburger
12-08-2002, 09:11
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;
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();
in getenv.ksh is
env > env.log
Das gefällt mir zwar nicht, aber es funktioniert.
Grüsse
Mike
anda_skoa
12-08-2002, 11:35
Vielleicht könnte man env direkt ausführen und mit Process.getInputStream von dessen stdout lesen.
Irgendwie so:
Process child = rt.exec("env");
BufferedReader envin = new BufferedReader(child.getInputStream());
String s;
while ( ( (s=envin.readLine()) != null) ) {
configline( s );
}
envin.close();
Ciao,
_
Mattburger
13-08-2002, 14:19
Hi anda_skoa,
ich hab das mit dem InputStreamReader hingekriegt.
BufferedReader envin = new BufferedReader( new InputStreamReader(child.getInputStream()));
Die Lösung gefällt mir auch bedeutend besser als der Umweg via Script.
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
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.