TIP-맥OS

Mac 터미널 /usr/libexec/java_home 명령으로 SDK man 경로를 인식 시키기

무한열정 2024. 4. 2. 14:46

java_home 명령으로 SDK man 경로 인식 시키기

$ /usr/libexec/java_home -V
Matching Java Virtual Machines (4):
    9999 (arm64) "SDKman" - "SDKMAN Current JDK" /Library/Java/JavaVirtualMachines/sdkman-current/Contents/Home
    17.0.9 (arm64) "Homebrew" - "OpenJDK 17.0.9" /opt/homebrew/Cellar/openjdk@17/17.0.9/libexec/openjdk.jdk/Contents/Home
    11.0.11 (x86_64) "AdoptOpenJDK" - "AdoptOpenJDK 11" /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home
    1.8.0_292 (x86_64) "AdoptOpenJDK" - "AdoptOpenJDK 8" /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/sdkman-current/Contents/Home

이와 같이 나오게 하고 싶으나 brew에서 설치한 JDK와 다르게 인식이 되지 않는다.

 

SDK man 경로가 인식 안되는 이유

1) 맥 OS에 설치된 JDK는 다음 경로 하위에 위치해야한다.

/Library/Java/JavaVirtualMachines/

2) JDK 디렉토리 구조 및 Info.plist 필요

* /Content/Home 디렉토리 하위에 JDK 존재 해야 함.

* 메타정보 파일인 /Content/ 디렉토리에 Info.plist 파일이 존재 해야 함.

 

 조치방법

1) 심볼릭 링크 추가

sudo ln -s /Users/{내사용자명으로수정}/.sdkman/candidates/java/current /Library/Java/JavaVirtualMachines/sdkman-current/Contents/Home

 

2) Info.plist 파일 추가

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>CFBundleIdentifier</key>
    <string>sdkman.current</string>
    <key>CFBundleName</key>
    <string>SDKMAN Current JDK</string>
    <key>JavaVM</key>
    <dict>
        <key>JVMPlatformVersion</key>
        <string>9999</string>
        <key>JVMVendor</key>
        <string>SDKman</string>
        <key>JVMVersion</key>
        <string>9999</string>
    </dict>
</dict>
</plist>

 

3) Info.plist 파일권한 수정

sudo chmod 444 Info.plist

 

 참고자료

https://stackoverflow.com/questions/76523553/how-to-make-usr-libexec-java-home-find-jdk-installed-using-sdkman-on-macos

 

How to make /usr/libexec/java_home find JDK installed using SDKMAN on MacOS?

I am making iOS apps in Kotlin, which relies on having a Script Build Phase calling Gradle from XCode. With a JDK installed using SDKMAN, it does not work and produces this error: The operation cou...

stackoverflow.com

https://danmilife.tistory.com/8

 

리눅스 권한 설정 (chmod, chown, chgrp)

1. 파일 권한 확인 ls -al 2. 파일 권한 설정 -rw-r--r-- 1 root root 0 2월 24 16:20 testfile2 testfile2파일의 소유자는 root이고 권한은 소유자(읽기/쓰기)권한, 그룹(읽기)권한, 다른 사용자(읽기)권한 - 파일표시

danmilife.tistory.com