Java에서 시스템 변수 값을 얻으려면 어떻게해야합니까?


169

에있는 시스템 변수 값을 얻는 방법

MyComputer -> Properties -> Advanced -> Environment Variables -> System Variables

자바?

편집하다

나는 System.getenv()방법 을 사용했다 .

주면 인쇄 가치입니다

System.out.println(System.getenv("JAVA_HOME"));

null내가 만든 시스템 변수에 대해 동일하게 시도하면 값 이 표시 됩니다.

System.out.println(System.getenv("DBE"));

5
요청 프로세스 (필자의 경우 NetBeans)를 다시 시작할 수 있습니다.
Kotodid

3
일식에서 다시 시작 옵션이 작동하지 않는 것으로 나타났습니다. 응용 프로그램을 닫고 다시 시작하십시오.
Yasin

1
IntelliJ를 다시 시작하면 문제가 해결되었습니다.
부샨 카르 마르 카르

시스템을 다시 시작하면 나를 위해 일했습니다. 새로운 변수가 감지되지 않아서 JVM이 처음 시작할 때 값 캐시를 유지할 수 있습니다.
sumitkanoje

답변:



52

명확히하기 위해 시스템 변수는 환경 변수와 동일합니다. 사용자 환경 변수는 사용자별로 설정되며 다른 사용자가 로그인 할 때마다 다릅니다. 시스템 전체 환경 변수는 사용자가 로그온 한 내용에 관계없이 동일합니다.

Java에서 시스템 전체 변수 또는 사용자 변수의 현재 값에 액세스하려면 아래를 참조하십시오.

String javaHome = System.getenv("JAVA_HOME");

환경 변수에 대한 자세한 내용은이 위키 백과 페이지를 참조하십시오 .

또한 다음을 수행하여 Java를 호출하기 전에 읽으려는 환경 변수가 올바르게 설정되어 있는지 확인하십시오.

echo %MYENVVAR%

환경 변수의 값이 표시되어야합니다. 그렇지 않으면 셸 (DOS)을 다시 열거 나 로그 오프했다가 다시 로그온해야합니다.


안녕하세요. System.getenv () 메서드를 사용했습니다. "System.out.println (System.getenv ("JAVA_HOME "));" 내가 만든 시스템 변수를 주면 null 값을 표시합니다 ( "System.out.println (System.getenv ("DBE "));"
raja

3
getenvgetEnv옳지 않고 작은 경우에 있어야 합니까?
Pratik Khadloya

1
내가 echo %var%인쇄하면 %var%. 대신 시도 echo $var하면 작동하고 해당 env 변수의 값을 표시합니다. 내 getenvnull을 반환합니다.
dialex

3
@dialex %var%는 윈도우, $var유닉스 / 리눅스 / MacOS 시스템에 사용됩니다.
Al-Mothafar 2012 년

27

시스템 / 환경 속성을 가져올 때 몇 가지 세부 정보가 있습니다.

처음 System.getenv(String)에는 길을 잃었을 때 소개되었고 더 이상 사용되지 않습니다. 지원 중단 (어리석게도 IHMO)은 JSE 1.4 까지 계속 진행 되었습니다 .

그것은있어 JSE 5 재 도입 .

이들은 Windows의 환경 변수 패널을 사용하여 설정됩니다. 현재 VM이 종료되고 CMD.exe 인스턴스가 종료 될 때까지 변수의 변경 사항이 적용되지 않을 수 있습니다.

환경 속성과 달리 Java에는 Java 시스템 속성도 있습니다 System.getProperties(). 이러한 변수는 일련의 명령 줄 인수를 사용하여 VM을 시작할 때 초기화 될 수 있습니다 . 예를 들어 속성 ​​값 과-Dname=valuemaxInMemorypagingDirectory 아래 명령에서 설정됩니다.

C : \> java.exe -DmaxInMemory = 100M -DpagingDirectory = c : \ temp -jar myApp.jar

이러한 속성은 보안 정책 제한을 제외하고 런타임에 수정할 수 있습니다.


19

실제로 변수를 설정하거나 설정하지 않을 수 있으므로 Java 8 이상에서는 nullable 값을 Optional객체 로 래핑해야 합니다. 다음 예제에서 변수를 얻으려고 시도합니다. ENV_VAR1존재하지 않는 경우 사용자 지정 예외를 발생시켜 경고 할 수 있습니다.

String ENV_VAR1 = Optional.ofNullable(System.getenv("ENV_VAR1")).orElseThrow(
  () -> new CustomException("ENV_VAR1 is not set in the environment"));

5

구글은 getenv () 를 확인하라고 말합니다 :

현재 시스템 환경의 수정 불가능한 문자열 맵보기를 리턴합니다.

그러나 시스템 변수가 환경 변수와 어떻게 다른지 잘 모르겠으므로 명확하게 설명하면 더 도울 수 있습니다.


raja는 "사용자 별"환경 변수가 아니라 "시스템 전체"를 의미한다고 생각합니다.
Rob

3

환경 변수를 설정 한 후 재부팅을 시도 했습니까?

Windows는 어떤 종류의 캐시에서 환경 변수를 유지하는 것으로 보이며 재부팅하는 것이 그것을 새로 고치는 한 가지 방법입니다. 확실하지 않지만 다른 방법이있을 수 있지만 변수 값을 너무 자주 변경하지 않으면 충분할 수 있습니다.


3

위의 sombody에서 언급했듯이 이클립스를 다시 시작하면 사용자 정의 환경 변수가 효과적이었습니다. Eclipse IDE를 다시 시작한 후 System.getenv()내 환경 변수를 선택합니다.


0

당신은 리눅스 시스템에 있습니까? 그렇다면 변수를 내보내고 있는지 확인하십시오.

myVar=testvalue; export myVar

export를 사용하여 값을 전역 적으로 정의하지 않으면 null이 발생합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.