MAC STS3 오류 / 환경 변수 설정/ JDK 삭제 및 설치 / Failed to load the JNI shared library

woniwon·2023년 5월 10일

Spring

목록 보기
1/8

Intro. Failed to load the JIN shared library 오류 발생

남궁성 강사님의 강의를 들으며 가장 처음 STS3을 설치하는 과정에서 위 사진 같은 오류가 계속해서 발생했다. 맥은 JAVA 설정이 어렵다는 이야기는 들었지만 실제로 이렇게 어려울 줄은 몰랐다. 맥을 만만히 보았던 나 반성해라,, 몇일동안 STS를 실행시키기 위해 엄청난 구글링을 통해 해결했다. 😂😂

1. 이클립스와 JDK 버전 차이

이클립스(STS)와 JDK가 서로 동일한 비트로 되어 있어야 하는데 만약 64비트와 32비트로 차이가 발생한다면 오류가 발생한다. JDK나 이클립스의 버전을 맞추어 주면 해결이 된다. 이 경우는 오류를 검색하면 가장 많이 나오니 설명은 생략ㅎㅎ
혹시 이클립스의 버전 확인법을 모르겠다면 여기 를 참고하면 좋을 것 같다.
JDK의 경우 터미널에 java -version 을 입력하면 아래와 같이 나오는데 3번째줄을 보면 확인할 수 있다.

2. 경로 지정 오류 - SDKMAN 활용

만약, 강의에서 처럼 SDKMAN을 활용하는 사람이라면, SDKMAN에서 자동으로 환경 변수를 지정해주기 때문에 vi 상에서 고쳐야 할 오류는 없다. 대신 문제가 발생한다면 여기 를 참고해 sts.ini 파일의 -vm경로를 수정하면 해결 할 수 있다. 그런데 나는 이 방법을 사용해도 해결되지 않아 마지막 방법을 선택했다..ㅠ 혹시 이 과정에서 다른 오류가 발생한다면 빠르게 포기하고 JDK를 모두 삭제하고 다시 설치하는 것을 추천한다. 결국 나도 다시 설치를 하면서 성공했다.

+) sts.ini 파일 위치

STS.app 우클릭 -> 패키지 내용 보기 -> Contents -> Eclipse -> STS.ini 파일이 있다

3. JDK 재설치 및 환경 설정 -ARM 버전을 사용한 오류

+) JDK 삭제

구글에 맥 JDK 삭제를 검색하면 3줄 정도의 코드가 나오는데 나는 그걸 사용해도 JDK 가 삭제되지 않아 직접 삭제를 했다.
삭제 여부를 확인하는 방법은 java -version을 터미널에 입력해서 설치하라는 문구가 나오면 성공이다.
만약 SDKMAN을 활용하는 사람이라면, $ echo $JAVA_HOME 을 입력해 나오는 경로인 아마 .sdkman 폴더를 아래 명령어로 삭제를 하면 된다. 또한 오라클에서 openJDK를 설치하였다면 기본 경로인 /Library/Java/JavaVirtualMachines 로 들어가 안에있는 JDK 폴더를 모두 삭제하면 된다.
삭제시 사용되는 코드는 아래와 같다.

sudo rm -rf [JDK 버전 이름]

+) JDK 재설치

JDK는 azul 에서 재설치를 진행했다.
이때 주의해야 할 점은 ARM 64bit JDK를 사용하지 말고 아래의 사진 처럼 선택해 .dmg 확장자 파일로 설치해야한다. 이걸 몰라서 또 한참 고생했다. 근데 m2의 경우 Archtecture는 ARM 기반인데 왜 ARM을 다운로드하면 작동이 안되는지 아직도 이해가 되지 않는다. 이 글을 많이 볼거라 생각하지는 않지만 혹시 보는 누군가가 이유를 안다면 꼭 댓글로 알려주세요,,
java 버전은 각자가 필요한 버전을 다운받으면 된다.

쭉쭉 설치를 진행을 하면 된다. 설치가 완료되었다면 환경 변수를 설정해보자

+) 환경 변수 설정

터미널에 echo $JAVA_HOME 입력시 환경변수가 출력되지 않으면 이 글을 따라 환경 변수를 출력하면 된다.
JAVA를 설치할 때 따로 위치를 옮기지 않았다면 기본 경로인 /Library/Java/JavaVirtualMachines/zulu11.jdk/Contents/Home 에 있을것이다. vi를 활용해 환경 변수를 설정해 줄 것이다.
1. 터미널에서 아래 코드를 입력해 자바 경로로 진입한다.
cd /Library/Java/JavaVirtualMachines/zulu11.jdk/Contents/Home
2. vi 화면으로 진입
vi ~/.zshrc 입력 후 i를 눌려 INSERT 모드로 진입한다. 이때 앞에서 SDKMAN을 사용한 사람이라면,
export SDKMAN_DIR="$HOME/.sdkman" [[ -s "$HOME/.sdkman/bin/sdkman-init.sh" ]] && source "$HOME/.sdkman/bin/sdkman-init.sh" 이런 코드가 있을 수 있는데 이는 SDKMAN이 환경 변수를 자동으로 설정하기 때문에 생긴것이다. 그냥 다 지워버리도록 하자.
이후, 아래 코드를 한 줄씩 복사해 붙여넣으면 된다. 이때 각자 버전에 따라 zulu-11.jdk 는 변경해주면 된다.

export JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home/bin
export CLASSPATH=/Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home/lib
export PATH=${PATH}:$JAVA_HOME/bin
  1. vi 종료 및 저장
    ESC를 한번 누르고 :wq 입력 (저장 후 종료)
    source ~/.zshrc 입력해 변경된 내용을 적용한다
    터미널에서 echo $JAVA_HOME을 입력하면 정상적으로 아래와 같이 출력되는 것을 확인하면 성공이다.

자 이 모든걸 다 끝냈다면 다시 sts.ini 파일로 돌아가서 -vm 의 경로를 $JAVA_HOME의 경로로 변경해주면 된다. 이때 꼭 -vm은 -vmargs보다 앞에 있어야 한다.

이제 한동안 JAVA를 재설치 할 일은 없겠지만, 혹시 내가 또 이런 오류를 만나거나 혹시 나와 같은 오류가 발생하는 사람이 있다면 도움이 되기 위해 주절주절 글을 써보았다!!

profile
단순 기록용 Velog 입니다.

0개의 댓글