System.getenv în Java

Citește variabilele de mediu ale sistemului (PATH, HOME sau setări proprii ca DB_URL); null dacă variabila nu există.

Sintaxă
static String getenv(String nume)
static Map<String, String> getenv()

Ce face System.getenv

Variabilele de mediu sunt perechi nume–valoare pe care sistemul de operare le dă fiecărui program la pornire. System.getenv("NUME") returnează valoarea, sau null dacă variabila nu este setată. Pe Linux și macOS numele țin cont de literele mari și mici; pe Windows nu.

Fără argument, System.getenv() returnează toate variabilele într-un Map care nu poate fi modificat. Variabilele de mediu sunt locul obișnuit pentru configurare (adrese de servere, porturi, chei de acces), ca să nu fie scrise în cod. Java nu poate schimba variabilele de mediu ale propriului proces.

Parametri

Parametru Descriere
nume Numele variabilei.

Ce returnează

Valoarea ca String, null dacă lipsește; varianta fără argument returnează un Map<String, String>.

Exemple

Exemplul 1: Variabile ale sistemului

Valorile depind de calculatorul pe care rulează programul.

public class Main {
    public static void main(String[] args) {
        System.out.println("HOME = " + System.getenv("HOME"));
        System.out.println("SHELL = " + System.getenv("SHELL"));
        System.out.println("Număr de variabile: " + System.getenv().size());
    }
}

Rezultat posibil (diferă de la un calculator la altul)

HOME = /home/ana
SHELL = /bin/bash
Număr de variabile: 27

Exemplul 2: Configurare cu valoare implicită

Dacă variabila PORT_APLICATIE nu este setată, folosim 8080.

import java.util.Objects;

public class Main {
    public static void main(String[] args) {
        String text = System.getenv("PORT_APLICATIE");
        System.out.println("Variabila setată: " + (text != null));
        int port = Integer.parseInt(Objects.requireNonNullElse(text, "8080"));
        System.out.println("Pornesc pe portul " + port);
        System.out.println("Există PATH: " + System.getenv().containsKey("PATH"));
    }
}

Rezultat

Variabila setată: false
Pornesc pe portul 8080
Există PATH: true

Greșeli frecvente

  • Folosești direct rezultatul: System.getenv("PORT").strip() aruncă NullPointerException dacă variabila lipsește. Tratează cazul null.
  • Încerci System.getenv().put(...): map-ul nu poate fi modificat și aruncă UnsupportedOperationException. Pentru setări din program folosește proprietăți (System.setProperty).

Comenzi înrudite

  • System.getProperty: Citește proprietățile JVM-ului (versiunea Java, sistemul de operare, directorul curent); lineSeparator() dă separatorul de rând.
  • Objects.requireNonNull: requireNonNull() oprește imediat cu un mesaj clar dacă o valoare este null; requireNonNullElse() înlocuiește null cu o valoare implicită.
  • System: Clasa care leagă programul de sistem: ieșirea standard (out), ieșirea de erori (err), intrarea (in), timpul, variabilele și setările.