h2をOSXのEclipse上でビルドしてみる
ちょっとものの試しに、h2をEclipseでビルドしてみようと思いました。
SVN Repositoryは http://h2database.googlecode.com/svn/trunk/ です。
チェックアウトしてみると、eclipseのプロジェクト形式ではないので、ごにょごにょする必要があります。基本的にはantにいろいろターゲットが用意されているので、そんなに苦労はしません。
そもそも通常使用であれば、h2では特に外部のjarを必要としないくらいですので、全体をビルドする際に依存しているjarも非常に少なく、4つのみです。直接手で持ってきてもいいかと思いますが、antのターゲット(download)が用意されているので、実行します。ext以下にjarを持ってくるので、eclipseの設定でビルドパスに入れます。
(以下、OSXの環境下ではjdk1.5ベースであるh2のソースをビルドしようとすると、OSXでは1.5が入っているように見えて、jdk1.6のシンボリックリンクになっているだけというためにエラーになる、というのを解決する手順。ところが、h2ではswitchSourceというantのターゲットを実行すれば1.6でもビルドできるようになるので、特に下記の手順は意味がない...。公式サイトの http://www.h2database.com/html/build.html に1.6でもビルドできる旨ちゃんと書いてあります。ちゃんと公式のページのないようにはきちんと目を通すべきですね...。)
で、h2のベースのソースはJDK1.5ベースで記述されています。OSX(Snow Leopard)では、JDK1.5やJDK1.4がインストールされているように見えるものの、実際は1.6へのシンボリックリンクになっているために、実装しているインターフェースに新しいメソッドが追加されている(ResultSetとか)ソースのコンパイルが通りません。
Snow Leopard には Java 5 が入ってるように見えて、実は入っていないらしい。入っているはずのところを見に行くと、Java 5 (1.5/1.5.0) のように見えるものは、実は Java 6 (1.6/1.6.0) へのシンボリックリンクになっている。
僕「これ Java 5 で動かして」Mac「おっけー、Java 6 で動かすね」 - sardineの日記
これについては、次の手順にて解決できました。
cd /tmp/
curl -o java.1.5.0-leopard.tar.gz http://www.cs.washington.edu/homes/isdal/snow_leopard_workaround/java.1.5.0-leopard.tar.gz
tar -xvzf java.1.5.0-leopard.tar.gzsudo mv 1.5.0 /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0-leopard
cd /System/Library/Frameworks/JavaVM.framework/Versions/
OS X 10.6 Snow Leopard - OneSwarm Wiki
sudo rm 1.5.0
sudo ln -s 1.5.0-leopard 1.5.0
sudo rm 1.5
sudo ln -s 1.5.0 1.5
やっぱりOSXでJavaは何かと面倒が多いですね...。