답변:
이것은 패키지 시스템의 비트에 따라 다릅니다 ... java
명령이 작동하면 입력 readlink -f $(which java)
하여 java 명령의 위치를 찾을 수 있습니다 . OpenSUSE 시스템에서 지금은 반환합니다 /usr/lib64/jvm/java-1.6.0-openjdk-1.6.0/jre/bin/java
(그러나 이것은을 사용하는 시스템이 아닙니다 apt-get
).
우분투에서는 OpenJDK 및 Suns JDK 의 다른 하위 디렉토리 (및 다른 구현도 포함 )에있는 것처럼 보입니다 ./usr/lib/jvm/java-6-openjdk/
/usr/lib/jvm/
특정 패키지에 대해 dpkg를 쿼리하여 설치하는 파일과 설치 위치를 결정할 수 있습니다. 예를 들어 'openjdk-6-jdk'패키지의 경우 :dpkg -L openjdk-6-jdk
/usr/lib/jvm/java-7-openjdk-amd64
.
readlink -f $(which javac)
동일한 컴퓨터에 JDK와 JRE가 이상하게 혼합되어있는 경우 'c'에주의하십시오. JDK에는 컴파일러 (javac)가 포함되어 있으며 JRE에는 없습니다. 그러나 경로가 올바르지 않으면 실패하고 시도 할 수 find /usr/java -wholename '*ava/jdk*' -prune
있습니다. 아래 주석에서 알 수 있습니다.
update-java-alternatives -l
어떤 자바 구현이 시스템의 기본값이며 파일 시스템의 어디에 설치되어 있는지 알려줍니다. 추가 옵션에 대해서는 설명서를 확인하십시오.
apt-get
와 배포판으로 Debian 2.6.26
. AFAIK, 모든 데비안 파생어에 대해 동일해야합니다.
$ which java
당신에게 뭔가를 제공해야합니다
/usr/bin/java
readlink -f $(which javac)
하면 인쇄 /usr/lib/jvm/java-8-oracle/bin/javac
됩니다. 해당 bin 폴더는 JDK가 아닙니다. JDK가 전류 $JAVA_HOME
에 경로가 포함되어 있는지 확인하기위한 일반적인 산-염기 시험 lib/tools.jar
. 그 캐스트에서는 /usr/lib/jvm/java-8-oracle/bin
사실이 아니므로 JDK가 아닙니다.
find /usr/java -wholename '*ava/jdk*' -prune
그러나 동작은 OpenJDK 또는 Oracle Java에 대해 이야기하는지 여부와 처음에 어떻게 설치되었는지에 달려 있습니다.
이 질문은 옮겨 지지만 다음을 수행 할 수 있습니다.
which javac
또는
cd /
find . -name 'javac'
찾기를 사용하여 찾으십시오. /usr
어딘가에 있어야합니다 :
find /usr -name java
명령을 실행할 때 실제 발견 된 결과를 난독 화하는 "권한 거부"메시지가 너무 많으면 stderr을 / dev / null로 리디렉션하십시오.
find /usr -name java 2> /dev/null
3 단계 프로세스 : 첫째 : 터미널 열기-> $ whereis java
다음과 같은 출력을 제공합니다.
java: /usr/bin/java /usr/share/java /usr/share/man/man1/java.1.gz
둘째 : 다음
ls -l /usr/bin/java
과 같은 출력을 제공합니다.
lrwxrwxrwx 1 root root 22 Feb 9 10:59 /usr/bin/java -> /etc/alternatives/java
셋째 :
ls -l /etc/alternatives/java
출력은 JDK 경로입니다.
lrwxrwxrwx 1 root root 46 Feb 9 10:59 /etc/alternatives/java -> /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
이 질문은 여전히 관련이있는 것으로 보이며 그 답은 움직이는 목표 인 것 같습니다.
내 데비안 시스템 (버스터)에서 :
> update-java-alternatives -l
java-1.11.0-openjdk-amd64 1111 /usr/lib/jvm/java-1.11.0-openjdk-amd64
그러나 실제로 살펴보면 향후 유지 관리를 단순화하기 위해 패키지 시스템에 여러 디렉토리와 기호 링크가 배치되어 있음을 알 수 있습니다.
실제 디렉토리는의 java-11-openjdk-amd64
다른 심볼릭 링크입니다 default-java
. openjdk-11
디렉토리 도 있지만 source.zip 파일 만 포함되어 있습니다.
이 점을 감안할 때 데비안에서만 사용하는 가장 좋은 값은입니다 /usr/lib/jvm/default-java
. 완전히 다른 버전의 Java를 설치하거나 스위치 공급 업체를 설치하더라도 항상 유효해야하기 때문입니다.
경로를 알고 싶어하는 일반적인 이유는 일부 응용 프로그램이 원하는 경로이기 때문에 버전 번호가 변경된 업그레이드를 수행하여 해당 앱이 중단되는 것을 원하지 않을 수 있습니다.
Linux Fedora30에서는 몇 가지 버전의 전체 Java JDK, 특히 패키지 이름을 사용할 수 있습니다.
java-1.8.0-openjdk-devel.x86_64
java-11-openjdk-devel.x86_64
설치되면 다음에서 찾을 수 있습니다. /usr/lib/jvm
전체 개발 JDK (단순 런타임 전용 JRE와 다른)의 위치 / 디렉토리를 선택하려면 항목을 찾으십시오.
ls -ld java*openjdk*
다음은 버전을 선택해야하는 특정 버전에 대한 링크 인 두 가지 올바른 선택입니다.
/usr/lib/jvm/java-1.8.0-openjdk
/usr/lib/jvm/java-11-openjdk