java – bluegold https://blog.bluegold.me OpenSolaris と MacBook で自宅ネットワークを構築するメモ Mon, 23 Aug 2010 17:52:35 +0000 ja hourly 1 https://wordpress.org/?v=5.2.1 6047458 Snow Leopard で FreeMind https://blog.bluegold.me/2009/09/snow-leopard-freemind-java-fix/ https://blog.bluegold.me/2009/09/snow-leopard-freemind-java-fix/#comments Wed, 09 Sep 2009 03:00:00 +0000 http://blog.bluegold.me/?p=264 前回の記事で問題となっていた、DVDの不良は週明けに渋谷のアップルストアに行って交換してもらいました。店員さんもなれた感じの対応でしたので、同じような返品交換がけっこうあったんでしょうね。「交換用の DVD もアップルストアで中身を開封して確認したわけではないので、これにも不具合が絶対に無いとは言いきれない」のような事を言っていたのでは、ある意味正直な店員さんだったんだろうな。

新しい DVD で再インストールしたところ、それまで起動できていなかった Mail, iPhoto, QuickSilver などは正常に使えるようになりました。普段使っているアプリに関しては(いくつか対応待ちのものがあるものの)移行は問題ないかと思っていましたが、昨日FreeMindが動かないのに気がつきました。仕事の議事録等は FreeMind で書くのが習慣となっていたので、このアプリが動かないとけっこう困ります。

動かないというのは正確ではなくて、実際には以下のようなダイアログが出てきました。
snow_leopard_rosetta_install_offlince
インターネットに接続している状態では、下のように Rosetta のインストールを促すようです。
snow_leopard_rosetta_install

なので、Rosetta をインストールしてしまえば解決なのですが、せっかく Snow Leopard に移行したんだから PowerPC のバイナリの無い環境にしたいので、解決方法を調べてみました。

エラーダイアログにある通り、問題は JavaApplicationStub が Universal Binary になっていない点にあります。JavaApplicationStub は文字通り Java で書かれたアプリケーションを Mac OS X のネイティブアプリのように見せるためのスタブとなる実行ファイルです。FreeMind.app の中から JavaApplicationStub を探して調べると、以下のようになっていました。

$ file FreeMind.app/Contents/MacOS/JavaApplicationStub 
FreeMind.app/Contents/MacOS/JavaApplicationStub: Mach-O executable ppc

やはり、ppc のバイナリしか入っていません。
Universal Binary な JavaApplicationStub も存在するはずなので、HDD の中を調べたところ以下の場所にありました。

$ file /System/Library/Frameworks/JavaVM.framework/Versions/A/Resources/MacOS/JavaApplicationStub
/System/Library/Frameworks/JavaVM.framework/Versions/A/Resources/MacOS/JavaApplicationStub: Mach-O universal binary with 3 architectures
/System/Library/Frameworks/JavaVM.framework/Versions/A/Resources/MacOS/JavaApplicationStub (for architecture x86_64):	Mach-O 64-bit executable x86_64
/System/Library/Frameworks/JavaVM.framework/Versions/A/Resources/MacOS/JavaApplicationStub (for architecture i386):	Mach-O executable i386
/System/Library/Frameworks/JavaVM.framework/Versions/A/Resources/MacOS/JavaApplicationStub (for architecture ppc7400):	Mach-O executable ppc

このファイルで FreeMind.app/Contents/MacOS/JavaApplicationStub を上書きしたところ、Rosetta 無しで起動するようになりました。

]]>
https://blog.bluegold.me/2009/09/snow-leopard-freemind-java-fix/feed/ 1 264