JNIの歩き方

まぁ唐突だけんど,この前どうしてもいじる必要が出てきたので,そのときのまとめをしておこうかなと.久しぶりに触ってみたけど,前にやったときよりはすんなりできたなぁ.





1. javaソースコード中に,c++の共有ライブラリから呼び出すための関数を nativeキーワードを利用して定義しとく.


2. 作成したjavaファイルをコンパイルしてみる.でー,クラスファイルが出来ていることが確認できたら,そのクラスファイルにjavahコマンドをかます.このとき,hogeがターゲットのクラス名だとして,javah -jni hoge -d headerファイルの出力先ディレクトリ.


3. だもんで,出力先ディレクトリには,hoge.h が出力されるわけ.でね,このhoge.hには,C/C++用の関数定義が書かれているわけだ.だから,後は,hoge.hに対する定義を書けばいい.


4. 定義を書いたらC/C++ソースのコンパイル.共有ライブラリを作ろう.作り方は,g++ -shared obj1.o obj2.o ... -o name ってな感じにするとlibname.soが出来上がるわなぁ.


5.そうするってぇと,あとは,javaのファイルを実行するだけなんだけど,私がやった環境(RHE3 EM64T版)だとなぜか,LD_LIBRARY_PATHにlibname.soを追加しても認識してくれないので,-Djava.class.path 確かこんな感じに環境パラメータを指定してみたろころ,動いた.