29

나는 이것에 대해 명확하지 않습니다. Java 응용 프로그램을 실행하거나 애플릿 뷰어 (IDE 환경에서)에서 애플릿을 실행할 때 System.getProperty("java.class.path")은 내 env 변수에 정의 된 CLASSPATH 인 System.getenv("CLASSPATH")과 동일합니다.시스템 속성과 환경 변수의 차이점

웹 서버에 애플릿을 배포하고 클라이언트와 동일한 컴퓨터에서 액세스 할 때 두 가지 결과가 달라집니다. (System.getProperty("java.class.path")은 JRE 홈을 가리키고 System.getenv("CLASSPATH")은 null을 리턴합니다). 브라우저뿐만 아니라 애플릿 뷰어에서 애플릿을 배포 할 때 애플릿의 경우

에서, ENV의 var에 JAVA_HOME, 나는 같은 결과를 얻을 : 여기

그리고

나를 궁금하게 다른 것입니다.

그리고 시스템 레벨에서 자신을 env 변수로 정의하고 getenv("envName")을 사용하면 결과는 null입니다. 어쨌든 내가 정의 할 수 있고 내 Java 프로그램에서 가져올 수 있습니까?

+0

내가 실수은 System.getProperty을 유지 ("java.io.tmpdir을 반환합니다

System.getenv("SYSTEM_TYPE") 

에 의해 변수를 읽을 수 있습니다 ") vs System.getenv ("TEMP ") –

+0

앞으로이 질문에 오는 사람들을 위해 [이 질문] (http://stackoverflow.com/questions/13112038/differ ence-between-system-getenv-system-getproperty)는 중복으로 표시되었고 좋은 대답이 있습니다. – Krease

답변

34

환경 변수는 운영 체제에 따라 다릅니다. 등록 정보는 JVM 전용입니다.

+0

아직도 env var가 운영체제인지 이해하지 못한다. 왜 애플릿에서 내 코드가 classpath의 env var를 얻는 지 두 경우에 다른 결과를 반환한다. 두 경우의 차이는 JVM 권한 일뿐입니다. –

+0

System.getenv에서 javadoc을 본 적이 있습니까? 브라우저, IDE 또는 콘솔에서 실행하는지 여부에 따라 차이가 있다고 생각합니다. 이들 각각은 서로 다른 환경을 가질 수 있습니다. –

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

위의 메서드는 JVM 인수와 속성을 반환합니다.

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

위의 방법은 운영 체제 environment 변수를 반환합니다.

Linux에서는 다음 명령을 사용하여 셸에서 환경 변수를 설정할 수 있습니다.

자바에서
export SYSTEM_TYPE=PROD 

당신은 위의 코드는 PROD

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