Hatena::ブログ(Diary)

shouhの日記

2014-03-29

javah で java ソースから c ヘッダを作成する

JNI の Java ソースファイルから C 言語のヘッダファイルを作成するには javah コマンドを使う。苦戦したのでメモ。

javah には色々なオプションがあるが、私は以下のようにしたら上手くいった。

javah -classpath (クラスファイルのルートパス) -d (cヘッダ作成先) (javaソースの完全修飾クラス名)

具体例。ディレクトリ構造がこんな感じだとする。

+hogeproj-root
 +classes(この配下にクラスファイルが作成されるとする)
  +com
   +shouh
    +hogeproj
     -HogeAPI.class
 +c_source

javah はこんなふうにして使う。

cd hogeproj-root
javah -classpath classes -d c_source com.shouh.hogeproj.HogeAPI

重要なのは「どのディレクトリでjavahを実行するか」と「javahに指定するクラスパスや完全修飾クラス名」の二つ。一つでも食い違うとクラスが見つかりませんというエラーが出る。