12月
11
2008

Sun SPOT Manager Toolでハマる

Sun SPOT Manager Toolは,ワンクリックでSun SPOTの開発環境を構築してくれる非常にありがたいツールなのですが・・・
便利さ故に見事にハマったのでメモ

問題は,LeopardでAppleのJava for Mac OS X 10.5 Update 2でJava SE 6 (64bit) を使用している場合に起こります

Manager ToolはSDKやDemo,NetBeans用のプラグインなどに加えて,SquawkというVMをインストールしてくれるのですが,VMなので一部アーキテクチャに依存する部分があって,同じLeopardでもIntelとPPCで違ってきます

Intel MacでJava SE 6を使っているとPPCと認識されるようで,PPC版のSquawkが入ってしまいます

SDKやツールのほとんどがJavaで書かれているので最初気づきませんでしたが,Sun SPOTのエミュレータを使おうとしたときに,"Java for ppc cannot run in this configuration." というエラーが発生します

fileコマンドを実行すると,Mach-O executable ppcとかいわれてビックリ!!

Squawkを入れ替えようとして,ソースを落としてきてビルドしようとしたのですが,SquawkのビルドもJava SE 6では通らず,J2SE 5.0でビルドする必要がありました

ビルドして,プロパティを書き換えて一応入れ替えてみたものの,エンディアンが違うと怒られるし,JNIのライブラリがあるので結局あきらめて再インストールすることに・・・

ただ,SDKだけを入れ直せばよくてツールもよくできているので簡単です

手順は以下の通り

  1. J2SE 5.0に切り替えます
  2. FinderとかでSDKを入れたフォルダをリネーム
  3. SPOT ManagerのSDKsタブを開いてRefreshしてリネームを反映
  4. 右側のAvailable SDKsからほしいバージョンを選んでインストール

今度は,バッチリMach-O executable i386です

ちなみにインストール後は,Java SE 6に戻しても大丈夫でした

今日ちょうどSunの方とお会いできたのですが,なんでも前にもPPCと勘違いするエラーはあって修正されたそうです
まぁUpdate 2が出たのは最近だし,Sun配布ではないので仕方ないですが,対応してほしいですね

ちなみにJNIの話ですが,PPCのバイナリでもRosettaで動くんやないかと思ってましたが・・・
RosettaはPowerPCコードとx86コードの混在したプロセスは処理できないのでダメです

Appleのサイトにズバリ書いてありました

PowerPCベースのMacintoshコンピュータ用にビルドされたJNIライブラリは、Java仮想マシンがRosettaなしですでに起動しているため、Rosettaのもとでロードされません。Javaアプリケーションは、インテルベースのMacではPowerPCのみのバイナリをロードしようとすると失敗します。

Written by h2 in: PC | タグ: , ,

コメントはまだありません »

RSS feed for comments on this post. TrackBack URL

コメントをどうぞ

TheBuckmaker WordPress Themes Webhosting, MP3, AAC & Co