기타 메모

java로 만들어진 툴을 사용하려는데 Unrecognized VM option 'AggressiveOpts' 에러가 날 때 (feat.jEnv)

Jonchann 2021. 10. 11. 12:27

digdag (job 의존 관리를 위한 워크플로우 엔진) 을 사용해야 해서 로컬 환경에 install 했으나

$ curl -o ~/bin/digdag --create-dirs -L "https://dl.digdag.io/digdag-latest"
$ chmod +x ~/bin/digdag

# bash 사용
$ echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
$ source ~/.bashrc

# zsh 사용
$ echo 'export PATH="$HOME/bin:$PATH"' >> ~/.zshrc
$ source ~/.zshrc

command를 입력하면 아래 에러가 뜨면면서 exit해버렸다.

$ digdag --version
Unrecognized VM option 'AggressiveOpts'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

찾아아보니 java 버전에 따라 AggressiveOpts가 deprecated인 것이 요인일 수 있다는 것을 알았다.

현재 로컬환경에서 사용하고 있는 java 버전을 확인한다. 난 아래 3 버전이 install되어 있었다.

$ /usr/libexec/java_home -V
Matching Java Virtual Machines (3):
    15.0.2, x86_64:    "Java SE 15.0.2"    /Library/Java/JavaVirtualMachines/jdk-15.0.2.jdk/Contents/Home
    1.8.0_282, x86_64:    "AdoptOpenJDK 8"    /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
    1.8.0_144, x86_64:    "Java SE 8"    /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home

/Library/Java/JavaVirtualMachines/jdk-15.0.2.jdk/Contents/Home

digdag 공식 홈페이지에 java 8을 권하고 있는 것 같으니 1.8.0_144를 default값으로 변경했다.

Got error?
If you got an error such as ‘Unsupported major.minor version 52.0’, please download and install the latest Java SE Development Kit 8 (must be newer than 8u72).

그런 김에 jEnv로 버전 관리 하는 법도 같이 적어놓으려 한다.

$ brew install jenv

# bash 사용
$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(jenv init -)"' >> ~/.bashrc

# zsh 사용
$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc
$ echo 'eval "$(jenv init -)"' >> ~/.zshrc

$ mkdir ~/.jenv/versions
$ jenv add `/usr/libexec/java_home -v "1.8.0_144"`

현재 적용되어있는 java버전을 확인한다.

$ jenv versions
* system (set by /Users/{user_name}/.jenv/version)
  1.8
  1.8.0.144
  1.8.0.282
  15
  15.0
  15.0.2
  openjdk64-1.8.0.282
  oracle64-1.8.0.144
  oracle64-15.0.2

system에 나와있는 경로로 가 보니 존재하지 않았다.

$ ls /Users/{user_name}/.jenv/version
$ ls: /Users/{user_name}/.jenv/version: No such file or directory

global환경에 1.8.0.144를 적용해준다.

$ jenv global 1.8.0.144
$ jenv versions
  system
  1.8
* 1.8.0.144 (set by /Users/{user_name}/.jenv/version)
  1.8.0.282
  15
  15.0
  15.0.2
  openjdk64-1.8.0.282
  oracle64-1.8.0.144
  oracle64-15.0.2

digdag도 정상적으로 버전을 출력해줬다.

$ digdag --version
0.10.0