Android開発している時に繋いでいる実機のログを見るためのAndroid device monitorですが、Java9を入れてしまった場合起動時にエラーが出るようになってしまい、使えなくなってしまいます。その時の対処法です
症状
ADMを使おうとするとエラーダイアログが発生しログを見ろと言われるのでログを見ると
java.lang.IllegalStateException: Unable to acquire application service. Ensure that the org.eclipse.core.runtime bundle is resolved and started (see config.ini).
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:74)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
at org.eclipse.equinox.launcher.Main.run(Main.java:1438)
のような例外が記録されている
原因
すべてJava9のJigSawのせい
解決策
monitorのInfo.plist を編集して、java8を使うように修正すればOKです。
下のように、Info.plistのEclipseのKeyにJava8のパスを設定してあげればOKです。
コメントも書かれているので、ファイルを開けばわかると思います。
/Users/{username}/Library/Android/sdk/tools/lib/monitor.app/Contents/Info.plist
<key>Eclipse</key>
<array>
<!-- この辺にコメントが書かれています -->
<string>-vm</string><string>/Applications/Android\
Studio.app/Contents/jre/jdk/Contents/Home/bin/java</string>
...
</array>
※PathはOSによって変わる可能性があります。
※--add-modulesを追加する方法もあるとは思いますが、みつけられませんでした
参考(というか自分が回答していますが)