H2Databaseを追っかけていたりしたブログ

H2 database のリリースノートを読んだりとか。

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.gz

sudo mv 1.5.0 /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0-leopard

cd /System/Library/Frameworks/JavaVM.framework/Versions/
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

OS X 10.6 Snow Leopard - OneSwarm Wiki

やっぱりOSXでJavaは何かと面倒が多いですね...。