最近、自宅のMacでidea
コマンドでIntelliJ IDEAが起動出来なくなっていました。
こんな感じのエラーがでて、何もおこらない。
LSOpenURLsWithRole() failed with error -10810 for the file /Applications/IntelliJ IDEA.app.
IDEA.app 内のideaコマンドで調べてみる。
Macの場合だと、appファイルの内部にもう一つidea
コマンドが内包されており、
こちらを叩いてみるとトレースログのようなものを出力してくれるので、
それで確認するのが良いみたいです。
/Applications/IntelliJ\ IDEA.app/Contents/MacOS/idea
叩いてみると。。
$ /Applications/IntelliJ\ IDEA.app/Contents/MacOS/idea
2018-05-30 22:30:00.053 idea[41922:6930459] allVms required 1.8*,1.8+
2018-05-30 22:30:00.055 idea[41922:6930465] Value of IDEA_VM_OPTIONS is (null)
2018-05-30 22:30:00.055 idea[41922:6930465] Processing VMOptions file at /Users/tyabuta/Library/Preferences/IntelliJIdea2018.1/idea.vmoptions
2018-05-30 22:30:00.056 idea[41922:6930465] Done
Picked up JAVA_TOOL_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED
Unrecognized option: --add-opens=java.base/java.lang=ALL-UNNAMED
2018-05-30 22:30:00.060 idea[41922:6930465] JNI_CreateJavaVM (/Applications/IntelliJ IDEA.app/Contents/jdk) failed: 4294967295
Unrecognized option: --add-opens=java.base/java.lang=ALL-UNNAMED
認識できないJVMオプションがあってコケていたようだ。
そういえば、Java10の警告抑止のために、.bashrc と、.zshrcに書いてたわ〜。
今は一旦、削除する事で解決しました。
IntelliJ IDEAはapp内臓のjreで動いている。
前述のJVMオプションは、Java9,Java10用に書いていたオプションなんですが、
IntelliJ IDEA自体は、IntelliJ IDEA.app/Contents/jdk
にあるJavaのランタイムを使用して起動しているようです。
$ cd /Applications/IntelliJ IDEA.app/Contents/jdk/Contents/Home/jre/bin
$ ./java -version
openjdk version "1.8.0_152-release"
OpenJDK Runtime Environment (build 1.8.0_152-release-1136-b20)
OpenJDK 64-Bit Server VM (build 25.152-b20, mixed mode)
内蔵のJREは、Java8なので、Unrecognized option となっていた。
ideaコマンドについて
idea
コマンドの実態は、pythonコードになっている。
$ which idea
/usr/local/bin/idea
/usr/local/bin/idea
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import socket
import struct
import sys
import os
import time
# see com.intellij.idea.SocketLock for the server side of this interface
RUN_PATH = u'/Applications/IntelliJ IDEA.app'
CONFIG_PATH = u'/Users/tyabuta/Library/Preferences/IntelliJIdea2018.1'
SYSTEM_PATH = u'/Users/tyabuta/Library/Caches/IntelliJIdea2018.1'
.
.
def start_new_instance(args):
if sys.platform == 'darwin':
if len(args) > 0:
args.insert(0, '--args')
os.execvp('open', ['-a', RUN_PATH] + args)
else:
bin_file = os.path.split(RUN_PATH)[1]
os.execv(RUN_PATH, [bin_file] + args)
ide_args = process_args(sys.argv)
if not try_activate_instance(ide_args):
start_new_instance(ide_args)
Macの場合、open
コマンドでapp起動されているようですね。
open -a /Applications/IntelliJ\ IDEA.app
おしまい
おそらく、最終的には、
/Applications/IntelliJ\ IDEA.app/Contents/MacOS/idea
が実行されている気がします。
上記のコマンドで起動した場合、起動後もコンソールにログが出続けるため、
他になにかエラーがあるときにも確認するのに役立ちそうです。