우분투에서 현재 JAVA_HOME을 찾는 방법은 무엇입니까?


답변:


84

터미널에 입력

echo $JAVA_HOME

JAVA_HOME 변수 경로를 표시합니다.

아무것도 표시되지 않으면이 설정으로 설정하십시오.

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

JDK 유형 및 버전에 따라 다릅니다.

다음 명령을 표시합니다.

다른 JDK를 사용하거나 JDK를 전환하려면 게시물을 따르십시오.


"/ usr / lib / jvm / java-6-sun"을 제공합니다. 그러나 Java 7을 설치했습니다. "java -version"을 사용하여 확인하면 Java 버전 "1.7.0_45"Java (TM) SE 런타임 환경 (빌드 1.7.0_45-b18) Java HotSpot ™ 서버 VM (빌드)이 제공됩니다. 24.45-b08, 혼합 모드)
Samitha Chathuranga

2
그런 다음 JAVA_HOME 변수 설정을위한 두 번째 명령을 실행하십시오. 참고 :JAVA_HOME doesn't make jdk default, it just makes JAVA_HOME variable set to a path & if you want to use different jdk installed on same machine then check my answer, I have edited it.
심화

/ etc / environment
keiki

@ Jax-L 그러나 이제 에코 JAVA_HOME을 제공하면 "JAVA_HOME"으로 표시됩니다. 내가 준 경로가 표시되지 않습니다 ... ???
Samitha Chathuranga

2
내보내기는 다시 시작할 때까지만 작동합니다. 또는 .bashrc 로그인 스크립트에 내보내기를 추가하십시오. 그러나 그러한 환경 변수를 설정하는 올바른 방법은 / etc / 환경이다
케이키

34

JDK 1.6 (Java 6에 해당) 또는 최신 버전이 설치되어 있으면에 이름이 지정된 프로그램이 있어야 jrunscript합니다 PATH. 이를 사용하여 해당하는을 찾을 수 있습니다 JAVA_HOME. 예:

$ jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));'
/opt/local/jdk1.7.0_76/jre

다음과 같이 환경 변수를 설정할 수 있습니다.

$ export JAVA_HOME="$(jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));')"

JRE에는을 포함하지 않으므로 JRE jrunscript뿐만 아니라 JDK를 설치 한 경우에만 작동합니다.


그것은 내가 한 디렉토리를 더 깊이 가야한다는 것을 알기 위해 많은 노력을 기울 였지만 감사합니다.
cnizzardini

15

또 다른 휴대용 옵션은 다음에서 JDK의 절대 경로를 추출하는 것입니다 javac.

export JAVA_HOME=`type -p javac|xargs readlink -f|xargs dirname|xargs dirname`

끝에서 제거하기 위해 절대 javac경로가 dirname두 번 전달됩니다 /bin/javac. 디렉토리의 완전한 추출은 다음과 같습니다.

$ type -p javac
/usr/bin/javac

$ readlink -f /usr/bin/javac
/usr/lib/jvm/java-8-oracle/bin/javac

$ dirname /usr/lib/jvm/java-8-oracle/bin/javac
/usr/lib/jvm/java-8-oracle/bin/

$ dirname /usr/lib/jvm/java-8-oracle/bin/
/usr/lib/jvm/java-8-oracle/

1
하나는 사용할 수 type -p javac|xargs readlink -f|xargs dirname|xargs dirname를 설정하지 않고 디렉토리를 알고 (수출 부분 제외).
Mina Michael

정확히 내가 찾던 것! 훌륭한 답변!
Silviu Burcea

7

업데이트 대안 메커니즘을 고려하려면 다음을 수행하십시오.

$ update-alternatives --query java | grep 'Value: ' | grep -o '/.*/jre'

다음과 같이 환경 변수를 설정할 수 있습니다.

$ export JAVA_HOME="$(update-alternatives --query java | grep 'Value: ' | grep -o '/.*/jre')"

JAVA_HOME에는 여전히 후행이 있기 때문에 이것은 충분하지 않습니다 /jre. 당신은 시도 할지도 모릅니다export JAVA_HOME="$(update-alternatives --query java | grep 'Value: ' | sed -e 's/Value: //;s?/jre/bin/java??;')"
James Brusey

7

그냥 명령을 실행

 sudo update-alternatives --config java

그것은 같은 것을 줄 것입니다

Es gibt nur eine Alternative in Link-Gruppe java (die /usr/bin/java bereitstellt): /usr/lib/jvm/java-8-oracle/jre/bin/java

이것으로부터 / usr / lib / jvm / java-8-oracle /을 java 홈으로 사용할 수 있습니다. 이제 JAVA_HOME 변수로 내보낼 수 있습니다

export JAVA_HOME=/usr/lib/jvm/java-8-oracle/

이제 $ JAVA_HOME을 에코하십시오.


1

나는 이것을 Ubuntu LTS (14.04 / 16.04)에서 사용합니다 :

[ -L /etc/alternatives/java ] && 
  export JAVA_HOME="$(readlink -f /etc/alternatives/java | sed -e 's/\/jre\/bin\/java$//')"


0

Java 9 이상의 경우 :

이 답변 https://askubuntu.com/a/657468/963 은 동봉 된 Nashorn JavaScript 엔진 Nashorn을 사용하여 java.home시스템 속성 을 인쇄 합니다. Nashorn은 더 이상 사용되지 않으므로 jshellJava 9에 도입 된 대안이 있습니다 .

echo 'System.out.println(java.lang.System.getProperty("java.home"));' | jshell  -

내 Ubuntu 18.10 시스템에서 다음을 인쇄합니다.

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