mvn pde:pde で SDK3.2系を headless build
実は先々週から悩んでいた件.mvn pde:pde は,便利. OSX + XCode は JavaやMavenが簡単にセットアップできる.この組み合わせってばサイコーと思っていたのが大ハマりの始まり.
難しいっていうより,マトモに集中できる環境に無くて問題点を整理できなかったっていう感じなのだけれども.
java.lang.Objectが見つからない.
これは,ビルド済みのプラグインやフィーチャーを用いてオレオレディストロを作る場合は顕在化しない*1.
原因は,判ってしまえば簡単.でも結構悩んだ.
まず,PDE側の問題.
PDEが自動生成するbuild.xmlは下記に挙げる通り.bootclasspathには,通常 rt.jar が指定されるが,fileset で指定したディレクトリには rt.jar が無い.これが問題の第1点.
<path id="path_bootclasspath"> <fileset dir="${java.home}/lib"> <include name="*.jar"/> </fileset> </path>
ここまで判ると付け焼き刃の対策は簡単.
下記のようにして解決.
# cd /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/ # ln -s ../../Classes/classes.jar rt.jar
制約事項
この解法が付け焼き刃に留まるのは,この解法には管理者権限が必要なため.Sourceforge.jp のコンパイラファームなどでは/System配下には(当然)手が出せないので,困る.
OpenJDK7辺りからSoyLatteの成果が取り入れられていてバイナリも入手可能.上手いことやればOpenJDKのJRE*3で環境を構築できるのかもしれない.でも私には具体的な解決策を見いだすことができなかった.