JRE 또는 JDK가 설치되어 있는지 확인하는 방법
일부러 JDK를 설치한 컴퓨터가 하나 있습니다.JRE를 사용하는 컴퓨터가 하나 더 있는데, 그 중에서도 테스트용입니다.그러나 이 컴퓨터에서 Java 어플리케이션을 실행한 후 다른 컴퓨터에서 실행해보니 JDK가 필요하다고 합니다.JDK가 시스템에 설치되어 있는지 확인하려면 어떻게 해야 합니까?참고: 문제의 컴퓨터는 Mac입니다.
터미널을 열고 간단히 입력할 수 있습니다.
java -version // this will check your jre version
javac -version // this will check your java compiler version if you installed
시스템에 설치되어 있는 Java 버전이 표시됩니다(시스템 환경에서 Java 경로를 설정했는지 확인).
아직 추가하지 않은 경우 다음을 통해 추가합니다.
export JAVA_HOME=/path/to/java/jdk1.x
시스템에 Java가 설치되어 있는지 확실하지 않은 경우find
말미에
예.find / -name "java"
보통 jdk 설치의 환경 경로 변수에는 javac이 포함되어 있습니다.따라서 경로에서 javac을 체크하면 jdk가 설치되어 있는 것을 알 수 있습니다.
@maciej-cygan은 프로세스를 잘 설명했지만 Java 경로를 찾으려면 다음과 같이 하십시오.
$ which java
그것은 당신에게 의 길을 준다.java
링크된 파일인 바이너리 파일/usr/bin
디렉토리로 이동합니다.다음:
$ cd /usr/bin/ && ls -la | grep java
(나에게는) 다음과 같은 위치를 찾아라:
그럼cd
Java의 실제 홈디렉토리를 검색하려면 , 다음의 순서에 따릅니다.
$ ls -la | grep java
이 경우 다음과 같습니다.
스크린샷에 나와 있듯이 자바 홈디렉토리는/usr/lib/jvm/java-11-openjdk-amd64
따라서 JAVA를 추가해야 합니다.내 bash 프로파일의 홈(.bashrc
,.bash_profile
(OS에 따라 다름) 다음과 같습니다.
JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
여기예요.
범용적이고 순수한 자바 솔루션..
Windows 및 MacOS의 경우 다음을 유추할 수 있습니다(대부분).
public static boolean isJDK() {
String path = System.getProperty("sun.boot.library.path");
if(path != null && path.contains("jdk")) {
return true;
}
return false;
}
하지만...Linux에서는 신뢰성이 떨어집니다.예를 들면...
- Linux의 많은 JRE에는 다음이 포함됩니다.
openjdk
오솔길 - JRE에 JDK도 포함되어 있지 않다는 보장은 없습니다.
따라서 보다 안전한 접근법은 Fail Safe의 존재 여부를 확인하는 것입니다.javac
실행 가능.
public static boolean isJDK() {
String path = System.getProperty("sun.boot.library.path");
if(path != null) {
String javacPath = "";
if(path.endsWith(File.separator + "bin")) {
javacPath = path;
} else {
int libIndex = path.lastIndexOf(File.separator + "lib");
if(libIndex > 0) {
javacPath = path.substring(0, libIndex) + File.separator + "bin";
}
}
if(!javacPath.isEmpty()) {
return new File(javacPath, "javac").exists() || new File(javacPath, "javac.exe").exists();
}
}
return false;
}
경고:JRE와 JDK의 조합이 JRE를 보고하는 경우에도 이 조작은 실패합니다.sun.boot.library.path
JRE와 JDK 사이는 동일합니다.예를 들어 위의 코드가 실행되면 Fedora의 JDK가 실패(또는 보는 방법에 따라 합격)합니다.자세한 내용은 아래 유닛 테스트를 참조하십시오.
유닛 테스트:
# Unix
java -XshowSettings:properties -version 2>&1|grep "sun.boot.library.path"
# Windows
java -XshowSettings:properties -version 2>&1|find "sun.boot.library.path"
# PASS: MacOS AdoptOpenJDK JDK11
/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home/lib
# PASS: Windows Oracle JDK12
c:\Program Files\Java\jdk-12.0.2\bin
# PASS: Windows Oracle JRE8
C:\Program Files\Java\jre1.8.0_181\bin
# PASS: Windows Oracle JDK8
C:\Program Files\Java\jdk1.8.0_181\bin
# PASS: Ubuntu AdoptOpenJDK JDK11
/usr/lib/jvm/adoptopenjdk-11-hotspot-amd64/lib
# PASS: Ubuntu Oracle JDK11
/usr/lib/jvm/java-11-oracle/lib
# PASS: Fedora OpenJDK JDK8
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-1.b16.fc24.x86_64/jre/lib/amd64
#### FAIL: Fedora OpenJDK JDK8
/usr/java/jdk1.8.0_231-amd64/jre/lib/amd64
JAVA 매뉴얼에 따르면 JDK는 다음 경로에 설치해야 합니다.
/Library/Java/JavaVirtualMachines/jdkmajor.minor.macro[_update].jdk
https://docs.oracle.com/javase/8/docs/technotes/guides/install/mac_jdk.html에서 JDK 제거 부분을 참조하십시오.
이러한 폴더를 찾을 수 있으면 JDK가 설치되어 있습니다.
문제의 컴퓨터는 맥이다.
MacOS 전용 솔루션:
/usr/libexec/java_home -v 1.8+ --exec javac -version
서 ★★★★★1.8+
Java 1.8 후 java java java 。
도 ★★★★★★★★★★★★★★★★★.java_home
코드를 하지 않기 등)이 필요합니다.2>&1 |grep -v "Unable"
는 로케일에 는 로케일에 따라 다릅니다.
는 "Java"에도 할 수 /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin
이 쓸 때, 되어 에는 「JRE」가 포함되어 있지 javac
뿐만 아니라.
언급URL : https://stackoverflow.com/questions/22539779/how-to-tell-if-jre-or-jdk-is-installed
'sourcecode' 카테고리의 다른 글
기본 생성자와 인라인 필드 초기화 (0) | 2022.09.14 |
---|---|
MySQL에서 임시 암호를 자동으로 생성한 후 액세스할 수 없습니다. (0) | 2022.09.14 |
Java를 사용하여 멀티파트/폼데이터 POST 요청을 하려면 어떻게 해야 합니까? (0) | 2022.09.14 |
디폴트 방식의 인터페이스는 언제 초기화됩니까? (0) | 2022.09.14 |
현재 실행 중인 스크립트를 로드한 스크립트태그는 어떻게 참조할 수 있습니까? (0) | 2022.09.14 |