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ăNullPointerExceptiondacă variabila lipsește. Tratează cazulnull. - Î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.