29

Nie jestem tego pewien. Po uruchomieniu aplikacji java lub uruchomieniu apletu w przeglądarce apletów (w środowisku IDE), System.getProperty("java.class.path") daje mi to samo, co System.getenv("CLASSPATH"), czyli zmienną CLASSPATH zdefiniowaną w zmiennej env.Jaka jest różnica między właściwością System a zmienną środowiskową

Ale kiedy rozmieszczę mój aplet na serwerze internetowym i uzyskuję do niego dostęp z tego samego komputera co klient, otrzymuję inne wyniki dla tych dwóch. (System.getProperty("java.class.path") wskazuje tylko na dom JRE i System.getenv("CLASSPATH") zwraca wartość null).

A oto kilka innych rzeczy, które sprawiają, że zastanawiam się:

Dla części apletu, JAVA_HOME env var, otrzymuję ten sam rezultat podczas wdrażania apletu w przeglądarce, a także apletem.

Jeśli zdefiniuję zmienną env na poziomie systemu i użyję getenv("envName"), wynikiem będzie null. Czy mimo to mogę zdefiniować jeden i uzyskać go w moim programie Java?

+0

Trzymam dokonywania błąd System.getProperty ("java.io.tmpdir ") vs System.getenv (" TEMP ") –

+0

Dla osób, które przyjdą na to pytanie w przyszłości, [to pytanie] (http://stackoverflow.com/questions/13112038/differ ence-between-system-getenv-system-getproperty) został oznaczony jako duplikat i ma również dobre odpowiedzi. – Krease

Odpowiedz

34

Zmienne środowiskowe są specyficzne dla systemu operacyjnego. Właściwości to tylko JVM.

+0

Nadal nie rozumiem, jeśli env var jest systemu operacyjnego, dlaczego mój kod w aplecie uzyskiwania env var z classpath zwraca inny wynik w dwóch przypadkach. Różnica w dwóch przypadkach jest tylko prawą maszyną JVM? –

+0

Czy widziałeś javadoc dla System.getenv? Myślę, że ma to wpływ na to, czy uruchamiasz go z przeglądarki, IDE czy konsoli. Każdy z nich może mieć inne środowisko. –

20
System.getProperty("Propertname") **Platform Independent** 

Powyższa metoda spowoduje zwrócenie argumentów i właściwości maszyny JVM.

System.getenv("EnvName")  **Platform Dependent** 

Powyższa metoda zwraca zmienne systemu operacyjnego environment.

W systemie Linux można ustawić zmienną środowiskową z powłoki, używając następującej komendy .

export SYSTEM_TYPE=PROD 

W Javie można odczytać zmienną przez

System.getenv("SYSTEM_TYPE") 

Powyższy kod zwróci PROD

http://javarevisited.blogspot.in/2012/08/how-to-get-environment-variables-in.html