MacユーザーがTopCoderをはじめるうえでつまづくポイント

MacユーザーがいざTopCoderでArenaを開こうとするとJavaがインストールされてないって怒られることがあります。

結論だけ先に言うと、自分の環境では/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javawsからJREをうまく見つけられないみたいなので、他のパスにインストールされているjavawsを使うとうまく起動しました
(例えば/System/Library/Java/Support/Deploy.bundle/Contents/MacOS/javaws )。


f:id:drwtsn64:20140204050622p:plain

それでJavaが入っているかチェックしてみると

f:id:drwtsn64:20140204050817p:plain

ChromeJava 7をサポートしていません」と言われるので、他のブラウザ(SafariFirefox)で確認してみます。

f:id:drwtsn64:20140204051020p:plain

ちゃんとインストールされていますね。

んで、FirefoxからTopCoderのArenaを開いてみます。

f:id:drwtsn64:20140204051201p:plain

お、さっきより先に進めますね。Java Web Startで起動するためのファイルがダウンロードされるようです。

OKをクリックして、ダウンロードして実行してみます。

おっと、何やら文句を言われました。
ふむふむ、Java Runtimeが入ってないと

f:id:drwtsn64:20140204051426p:plain

でも、さっきJavaが入ってる確認はしたので、これはおかしいです。

では、先ほどダウンロードしたファイルを直接実行してみます。

Java Web Startで実行するので以下のコマンドでいけるはずです。

$ javaws <filename>

すると、さきほどと同じように文句を言われました。

$ javaws ~/Downloads/ContestAppletProd.jnlp
No Java runtime present, requesting install.
Unable to locate a Java Runtime to invoke.


javawsの場所を確認してみます。

$ which javaws
/usr/bin/javaws

/usr/bin/javawsはシンボリックリンクなので、
参照先のファイルを調べます。

$ ls -l /usr/bin/javaws
/usr/bin/javaws -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javaws

/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javawsにJava Web Startはあるみたいです。

Is there any way to reenable javaws with Java 6 on OSX Lion? - Stack Overflow ここを見てみると、Javaのインストールパスは複数あるようです。

/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/ /System/Library/Java/Support/Deploy.bundle/Contents/MacOS

/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands以外のパスのJava Web Startを使ってみます。

$ /System/Library/Java/Support/Deploy.bundle/Contents/MacOS/javaws ~/Downloads/ContestAppletProd.jnlp

すると正常に起動しました。

f:id:drwtsn64:20140204053151p:plain

起動したので、原因は探りません。とりあえず、/System/Library/Frameworks/JavaVM.framework/Versions/Current/CommandsからJREをうまく見つけられていないようです。