JAVA_HOME 환경 변수가 존재하는 이유는 무엇입니까?


94

많은 Java 기반 응용 프로그램에서는 JAVA_HOME 환경 변수를 설정해야합니다. 이 변수의 목적은 무엇입니까?


5
당신이 읽을 수 있습니다 여기에
세르게이 Vedernikov에게

2
질문에 아직 답변이 없습니다. Java 자체를 실행하려면 경로에 바이너리가있는 폴더가있는 경우이 변수가 필요하지 않습니다. 모든 답변은 "자바가 설치된 위치"라는 명백한 점을 지적합니다. 그러나 왜 : 자바 애플리케이션을 실행하는 것은 무엇을 의미합니까?
늑대

7
이러한 모든 의견과 답변에도 불구 하고이 환경 변수를 설정할 실제 이유 는 없습니다 . 근거가 없습니다. 나는 wsdl2java로 이것을 설정하려고 여기에 왔습니다. 이 도구를 사용하지 않았다면 env 변수가 필요하지 않습니다 .... 겉보기에는 일부 도구가이 변수를 사용하는 것 같습니다. 그런데 왜?
Thufir

@Thufir- 그러나 명시 적으로 언급 된 이유를 보지 못했습니다. -JAVA_HOME은 단지 관례입니다. 모든 사람이 AFAIK를 사용하기로 동의 한 것 외에는 특별한 의미가 없습니다. 내가보기에 유일한 용도는 도구에 일반적으로 PATH 변수에 설정된 JRE와 JDK를 구별 할 수있는 기능을 제공한다는 것입니다. 일반적으로 JAVE_HOME은 JDK로 설정됩니다. -명시 적입니다. java exe를 찾을 수있는 여러 위치가있을 수있는 PATH와 같이 디렉토리 순서를 처리하지 않습니다.
Rohan

답변:


22

환경 변수 는 드라이브, 경로 또는 파일 이름과 같은 정보를 포함하는 문자열입니다.

JAVA_HOME 환경 변수의 자바 런타임 환경 (JRE)가 컴퓨터에 설치되어있는 디렉토리를 가리 킵니다.


40
한 가지 수정 사항 : JAVA_HOME은 JRE가 아닌 JDK를 가리켜 야합니다. 많은 앱이 차이를 신경 쓰지 않지만 일부에게는 중요합니다.
Chris Nava

4
JDK에서 사용할 수있는 JRE 폴더도 있습니다. 따라서 JAVA_HOME의 도움으로 애플리케이션은 JRE뿐만 아니라 JDK를 찾을 수 있습니다.
rogue lad

@ChrisNava : JAVA_HOME을 JRE 설치로 가리키는 것이 어떤 경우에는 유효합니다 (내가 추측 할 수있는 대부분의 비 개발 사례) : stackoverflow.com/questions/17601827/… . 그래서 "해야한다"는 말은 너무 많이 말하는 것입니다.
cic

18

목적은 Java가 설치된 위치를 가리키는 것입니다. $JAVA_HOME/bin/java자바 런타임을 실행해야합니다.


4
그러나 자바가 경로에 있어야하고 바이너리가 자신을 찾고 상대 경로를 사용하여 다른 파일을 열 수 있기 때문에 어리석은 일입니다.
LtWorf

3
예를 들어 여러 SDK 설치 가있는 경우와 같이 java가 $ PATH에 없을 때 유용 합니다.
Haakon

바이너리에 대한 첫 번째 인수는 실행 파일 자체의 전체 이름이며 java는 자체 디렉토리를 찾기 위해 경로에있을 필요가 없습니다.
LtWorf

@Haakon 누군가가 여러 JDK를 설정 하려는 경우 경로에 Java를 원하지 않는 이유는 무엇입니까? Windows는 어쨌든 java_home에서 java를 어떻게 찾습니까? 나는 경로가 "OS가 실행 파일을 찾을 위치 목록"으로 다소 정의되었다고 생각했습니다.
LastStar007

7

Java 프로그램을 실행할 때 먼저 JVM을 시작해야합니다. 일반적으로 실행 파일을 실행하여 수행됩니다 . Windows에서는 java.exe 입니다. 예를 들어 전체 경로를 제공하는 등 여러 가지 방법으로 얻을 수 있습니다.

C:\somedir\bin\java.exe

또는 PATH에있을 수 있습니다.

프로그램 인 클래스 파일을 포함하는 일부 클래스 파일 또는 Jar 파일을 명령 줄 인수로 지정합니다. 그러나 그것만으로는 충분하지 않습니다. java.exe 자체에는 모든 Java 라이브러리뿐만 아니라 다양한 다른 리소스가 필요합니다. 환경 변수 JAVA_HOME을 설정하여 JRE 및 모든 런타임 리소스를 찾을 위치를 지정합니다. 실행하는 특정 Java가 JAVA_HOME의 설정과 일치하는지 확인해야합니다.

또한 JAVA_HOME\bin경로 에 초기에 배치하여 java.exe자신의 복사본을 생성하는 경우 (예 : JSP 컴파일) 올바른 버전을 선택해야 할 수도 있습니다.


6

@dirai에 따르면 여기는 JAVA_HOMEJava 자체가 아니라 Apache Tomcat과 같은 타사 도구에서 사용됩니다 . 그러나 대부분의 응용 프로그램은이 변수를 설정하지 않아도 작동하지만 일부 응용 프로그램은 예기치 않은 동작을 보일 수 있습니다.


5

JAVA_HOME환경 변수 .

다른 운영 체제에서 설정해야합니다. 다음 링크를 확인하십시오.

자세한 내용 은 여기 를 참조하십시오.


1
당신은 가미하여 있습니다 environmentpath여러 가지 있지만, 리눅스와 같이 Windows에서 정확히 같은 방식으로 사용되는.
Val

1
@val은 그 이후 그의 대답에서 수정되었습니다.
barlop


3

JAVA_HOME여러 Java 설치를 실행할 수 있습니다. /usr/lib/jvm/java-1.8.0/bin/java PATH에 먼저 있는 경우에도 JAVA_HOME=/usr/lib/jvm/java-1.5.0프로그램을 실행하는 데 사용되는 기본 "java"가 환경 설정의 문제로 대신 다른 하나를 사용 하도록 말할 수 있으면 유용 합니다. 이를 통해 프로그래머는 정상적인 시스템 위치에 설치되지 않은 경우에도 필요한 Java를 사용할 수 있으며 해당 대체 버전과의 역 호환성을 테스트하거나 제공 할 수 있습니다. 또한 Java 자체의 주요 버전 업데이트와 같이 설치된 다른 프로그램에 의해 PATH에서 재설정되는 것에 취약하지 않습니다.

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