Python から Java を使ってみる
Python から Java を弄りたいと思ったので何となくやってみる。
PyPI でモジュールを探したら javabridge と javaclass がでてきた。
javaclass
で、 javaclass を試してみたらダメだったという。
Mercurial のリポジトリ(証明書エラー出るので自己責任) に runclass.py というサンプルがあるので中を見てみると、
import javaclass.classhook import java.lang
となっている。
これは javaclass.classhook を読み込んだ時点で Python の import hook が仕掛けられるのだろうけども、どうやらこれがうまくいっていない。
調べるのも面倒なのでこっちはスルー。
javabridge
もう一つのモジュール javabridge を使ってみる。
$ pip install javabridge
してみたらこけた。
JAVA_HOME がないっぽかったので jdk 落としてきて
$ JAVA_HOME=$HOME/local/jdk1.7.0_05 pip install javabridge
とか指定してあげた。
でもだめ。
gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions build/temp.linux-i686-2.6/javabridge/javabridge.o -L/home/shoma/local/jdk1.7.0_05/jre/lib/amd64/server -ljvm -o build/lib.linux-i686-2.6/javabridge/javabridge.so /usr/bin/ld: cannot find -ljvm collect2: ld returned 1 exit status
とか言われてしまう。
このメッセージをよく見ると、
-L/home/shoma/local/jdk1.7.0_05/jre/lib/amd64/server
とか書いてあっておかしい。
そもそもこのビルドを行っているマシンは 32bit OS なのでこんな指定は変だなあと。
まあ直接指定すればいいので
$ export CFLAGS="-L/home/shoma/local/jdk1.7.0_05/jre/lib/i386/server"
とか指定してあげて再度ビルドしてインストール成功。