2013-12-16 2 views
29

내 OS는 windows7입니다. Java 응용 프로그램에서 환경 변수를 읽으 려합니다. 나는 Google을 검색했으며 많은 사람들의 대답은 System.getProperty(String name) 또는 System.getenv(String name)이라는 방법을 사용하는 것입니다. 그러나 그것은 효과가없는 것처럼 보입니다. 이 방법을 통해 JVM에서 정의 된 변수의 값을 읽을 수 있습니다.Java에서 OS 환경 변수를 읽을 수 있습니까?

"Config"라는 이름의 환경 변수를 "some config infomations"값으로 설정하면 Java에서 값을 어떻게 얻을 수 있습니까?

도움 주셔서 감사합니다.

+2

'System.getenv()'는 올바른 호출입니다. –

+4

가능한 복제본 http://stackoverflow.com/questions/461018/how-can-my-java-code-read-os-environment-variables –

+4

또한 Windows에서 env 변수를 수정하면 변경 사항을 제대로 반영하려면 콘솔 (또는 IDEA 같은 편집기)을 다시 시작해야합니다. – vikingsteve

답변

49

당신은 예를 들어, System.getenv()를 사용한다 :가 IDE에서 실행하는 경우

import java.util.Map; 

public class EnvMap { 
    public static void main (String[] args) { 
     Map<String, String> env = System.getenv(); 
     for (String envName : env.keySet()) { 
      System.out.format("%s=%s%n", 
           envName, 
           env.get(envName)); 
     } 
    } 
} 

당신이 당신의 자바 응용 프로그램으로 전달됩니다 추가 환경 변수를 정의 할 수 있습니다. 예를 들어 IntelliJ IDEA에서는 run configuration의 "환경 변수"필드에 환경 변수를 추가 할 수 있습니다.

다른 Windows 실행 파일과 마찬가지로 환경 변수에 대한 시스템 수준의 변경 사항이 다시 시작될 때 프로세스로 전파된다는 점에 유의하십시오 (@vikingsteve의 주석에서 언급했듯이).

자세한 내용은 Java 자습서의 "Environment Variables"섹션을 참조하십시오.

System.getProperty(String name)은 환경 변수가 아닌 Java system properties을 가져 오기위한 것입니다.

+2

@drorb 왜 "환경 변수"를 얻을 수 없는지는 문제입니다. IDE를 다시 시작하지 않았기 때문입니다.^ – William

+0

저도 마찬가지입니다. IDE를 다시 시작해야했습니다. – gosua

34

누구나 여기에 와서 모든 시스템 변수를 반복하지 않고 특정 환경 변수를 얻는 방법을 알고 싶다면 getenv(String name)을 사용할 수 있습니다. 변수의 문자열 값을 반환하거나 변수가 시스템 환경에 정의되어 있지 않으면 null을 반환합니다.

String myEnv = System.getenv("env_name"); 
+0

OS 독립적입니까? – TheByeByeMan

+4

예, 환경에 영향을 줄 수있는 모든 OS에서 작동합니다. –

관련 문제