Anzeige:
Ergebnis 1 bis 6 von 6

Thema: Envirnment-variablen unter Java

  1. #1
    Registrierter Benutzer Avatar von Mattburger
    Registriert seit
    10.05.2001
    Ort
    Reutlingen
    Beiträge
    69

    Envirnment-variablen unter Java

    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 ?

  2. #2
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    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

  3. #3
    Registrierter Benutzer Avatar von Mattburger
    Registriert seit
    10.05.2001
    Ort
    Reutlingen
    Beiträge
    69

    getenv -> getProperties

    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

  4. #4
    Registrierter Benutzer Avatar von Mattburger
    Registriert seit
    10.05.2001
    Ort
    Reutlingen
    Beiträge
    69

    Unhappy Runtime.exec

    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;

    Code:
           
           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
    Code:
    env > env.log
    Das gefällt mir zwar nicht, aber es funktioniert.

    Grüsse

    Mike

  5. #5
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Vielleicht könnte man env direkt ausführen und mit Process.getInputStream von dessen stdout lesen.

    Irgendwie so:

    Code:
    Process child = rt.exec("env");
    BufferedReader envin = new BufferedReader(child.getInputStream());
    String s;
    while ( ( (s=envin.readLine()) != null) ) {
        configline( s );
    }
    envin.close();
    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  6. #6
    Registrierter Benutzer Avatar von Mattburger
    Registriert seit
    10.05.2001
    Ort
    Reutlingen
    Beiträge
    69

    Talking Hat geklappt

    Hi anda_skoa,

    ich hab das mit dem InputStreamReader hingekriegt.

    Code:
          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

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •