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だけを入れ直せばよくてツールもよくできているので簡単です
手順は以下の通り
- J2SE 5.0に切り替えます
- FinderとかでSDKを入れたフォルダをリネーム
- SPOT ManagerのSDKsタブを開いてRefreshしてリネームを反映
- 右側の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のみのバイナリをロードしようとすると失敗します。
コメントはまだありません »
RSS feed for comments on this post. TrackBack URL
