카테고리 없음

[Mac M1] h2 데이터베이스 설치 시 ./h2.sh: line 3: 23678 Trace/BPT trap: 5 오류 해결 로그

i-m-okay 2025. 2. 9. 23:05

h2 설치

  1. h2 홈페이지에서([https://www.h2database.com]) zip파일로 다운로드
  2. 권한 주기: chmod 755 h2.sh
  3. 실행: ./h2.sh

순조로웠으나, ./h2.sh 후에 에러 메시지가 떴다.

./h2.sh: line 3: 23678 Trace/BPT trap: 5 java -cp "$dir/h2-2.3.232.jar:$H2DRIVERS:$CLASSPATH" org.h2.tools.Console "$@"

검색해보았다.

동일한 에러가 발생되었다는 인프런의 글을 통해 해결할 수 있었다. (https://www.inflearn.com/community/questions/1066748/h2-%EC%8B%A4%ED%96%89-%EB%B6%88%EA%B0%80-%EB%AC%B8%EC%9D%98)

해결 방법: brew를 완전히 삭제하고, 재설치 한 후에, oracle-jdk 재설치한다.

나의 경우, brew와 java의 경로가 모두 일반적이지 않고, 꼬여 있어서 모두 삭제하고 재설치하는 방식으로 해결하였다.

1. Homebrew 수동 삭제

- Homebrew 관련 파일을 삭제한다.

sudo rm -rf /opt/homebrew
sudo rm -rf ~/Library/Caches/Homebrew
sudo rm -rf ~/Library/Preferences/org.homebrew.*
sudo rm -rf ~/Library/Logs/Homebrew
sudo rm -rf ~/Library/Application\ Support/Homebrew
sudo rm -rf ~/.brewconfig

- 환경 변수를 정리한다.

vi ~/.zshrc

로 ./zshrc를 열어서

eval "$(/opt/homebrew/bin/brew shellenv)"
export PATH="/opt/homebrew/bin:$PATH"
export PATH="/opt/homebrew/sbin:$PATH"

를 찾아 지워준다.

esc + ":wq" (저장하고 닫기)하고 enter 한 후

source ~/.zshrc

를 통해 환경변수를 적용해준다.

brew --version 을 입력했을 때 command not found가 나온다면 성공이다.

2. Homebrew 재설치

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

를 입력하고 enter 키를 눌러 설치를 시작한다.

설치가 종료되면

echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zshrc
source ~/.zshrc

를 통해 homebrew 환경 변수를 설정해준다.

brew --version을 통해 설치를 확인한다.
Homebrew X.X.X 와 같이 버전이 뜬다면 성공이다.

3. Oracle JDK 17 설치

brew install --cask oracle-jdk

를 통해 재설치한 homebrew로 jdk를 설치한다.

java -version을 통해 설치가 잘 되었는지 확인한다.

4. JAVA_HOME 설정

나의 경우, JAVA 관련 환경변수와 brew 관련 환경변수가 완전 꼬여있어서 더욱 해결이 어려웠다.
환경 변수 설정은 반드시 해주는 것이 중요하다.

echo 'export JAVA_HOME=$(/usr/libexec/java_home -v 17)' >> ~/.zshrc
echo 'export PATH="$JAVA_HOME/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

로 JAVA를 찾을 수 있도록 설정해주고,

echo $JAVA_HOME 를 통해 설정이 잘되었는지 확인한다.

/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
와 같은 값이 나오면 성공이다.

 

이후에 다시 h2를 실행해보면 잘 되는 것을 확인할 수 있다.