Mac OS Xのアップデート後にEclipseが起動しなくなった時の対応


経緯

Mac OS X El Capitanにアップデート後にEclipseを起動しようとしたら「"Eclipse.app" を開くには、以前の Java SE 6 ランタイムをインストールする必要があります。」というダイアログが出て起動できませんでした。

いや自分、Java SE 8インストール済みなんすけど…

$ java -version
java version "1.8.0_31"
Java(TM) SE Runtime Environment (build 1.8.0_31-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.31-b07, mixed mode)
$ /usr/libexec/java_home -V
Matching Java Virtual Machines (1):
    1.8.0_31, x86_64:    "Java SE 8"    /Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home

/Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home

JavaのFAQページによると、このダイアログが出る原因はApple側の問題とか

原因

これは、通常アプリケーションがAppleによって提供されたレガシーのJava 6を必要とするためです。この問題の解決策については、http://support.apple.com/kb/DL1572 を参照してください。

…で、リンク先のAppleのサポートページ見ると「Java SE 6入れてね(はぁと」としか書いていませんでした。

さすがApple!

対応

普通に考えて新しいバージョンのJava SEが入っていれば問題ないはずなので、わざわざJava SE 6をインストールしなくても起動できるようにする方法を書いておきます。

JDKのInfo.plistに設定を追記する

JDKのインストールフォルダにある設定ファイルの内容を編集します。
今回の環境では以下の場所に置いてありました。

/Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Info.plist

どうやらJVMの動作設定がコマンドラインのみになっていたことが原因だったようです。

Info.plist
    <key>JVMCapabilities</key>
        <array>
            <string>CommandLine</string>
        </array>

Info.plistのJVMCapabilitiesに必要な設定を追記します。

Info.plist
    <key>JVMCapabilities</key>
        <array>
+           <string>JNI</string>
+           <string>BundledApp</string>
+           <string>WebStart</string>
+           <string>Applets</string>
            <string>CommandLine</string>
        </array>

設定保存後、一旦ログアウトしてログインしなおせばダイアログが出なくなり、Eclipseを起動できるようになります。

参考

YosemiteまたはEl Capitanで最新のJavaバージョンをインストールした後でもJavaをインストールするように求められるのはなぜですか。
Eclipse Kepler for OS X Mavericks request Java SE 6 - Stack Overflow