M1 MAC에서 STS3를 다운로드 받아서 실행 할 경우 위와 같은 JNI_CreateJavaVM symbol에러가 발생했다. 이 부분 같은 경우 JDk8을 사용하거나 ARM JDK를 사용해서 에러가 날 확률이 매우 크다.
sts3 github 링크에서 확인을 해보면 아래와 같이 ARM 버전이 없었다.
이럴 경우 arm에서 vm으로 빌드를 해서 x86_64버전의 sts3을 실행이 가능하다.
sts3 app에서 JDK설정을 한다고 생각하면 편할거 같다.
아래 링크를 접속해서
https://www.azul.com/downloads/#zulu
압축을 해제한 x64버전의 JDK11 폴더만 /Library/Java/JavaVirtualMachines 경로로 옮겨준다. 나같은 경우 ARM JDK11을 이미 쓰고 있어서 JDK폴더 이름을 zulu-11-x64로 변경을 해주고 폴더를 옮긴다.
잘 옮겨진겄을 확인 할 수가 있다.
STS.ini파일에 java vm 경로를 추가를 해야한다.
Contents > Eclipse > STS.ini
편집기를 사용할 경우 계속 저장하지 못한다는 에러 발생
나같은 경우 Applications 폴더에 STS를 설치 했으므로 ST의 Eclipse폴더로 이동
cd /Applications/STS.app/Contents/Eclipse
vim명령어로 파일 수정
vi STS.ini
java jdk11 x86 64bit 버전의 경로를 추가 해준다.
-vm
/Library/Java/JavaVirtualMachines/zulu-11-x64.jdk/Contents/Home/bin/java
wq! 입력: 저장 및 나가기
STS.ini를 성공적으로 설정 완료후 상위 폴더로 이동해서 Info.plist를 수정한다.
cd ..
ls
필요할 경우 Info.plist 파일의 eclipse > array > 주석 > string 부분 주석 해제하고 java vm 경로 입력
잘 실행이 되는것을 확인 할 수 있다.
결론:
(1)
Apple의 M1 칩은 Rosetta라는 에뮬레이션 기술을 사용하여 x86 앱을 실행할 수 있도록 지원하고 있다.
(2)
일부 x86 앱은 ARM 아키텍처로의 변환 또는 재컴파일링을 통해 ARM PC에서 실행될 수 있도록 지원될 수 있다. 개발자는 기존 x86 앱을 ARM 아키텍처에 맞게 다시 컴파일하거나 변환하여 ARM PC에서 작동하도록 만들 수 있다. 이를 통해 앱의 성능과 호환성을 향상시킬 수 있다.
Window를 사용할 할 때 앱을 설치할 경우 항상 x86/Amd 앱을 무작정 설치하는거를 당연하게 생각을 했었다. M시리즈 맥을 구매하고 나서 앱을 설치하는데 있어서 무척 불편해서 맥 구매 한것을 많이 후회한 적이 많았다.
다만 이렇게 하나하나씩 해결을 하면서 CPU아키텍처인 RISC CISC에 대해서도 공부를 스스로 하게 되는거 같다. 오늘의 나는 많이 성장을 한거 같다!
감사합니다! sts3 설치 때문에 애먹고 있었는데 덕분에 잘 해결했습니다.
Java 17 버전으로도 잘 돌아가네요 ^^