JNI(Java Native Interface)の為のC言語/C++のヘッダーファイルを作成するオプションタスク。
(org.apache.tools.ant.taskdefs.optional.Javah extends Task)
属性 | 説明 | javahコマンドのオプション |
---|---|---|
classpath | 生成するクラスがあるディレクトリ | -classpath ディレクトリ |
class | 生成元となるクラス名(ファイル名ではない) | クラス名 |
destdir | 生成先のディレクトリ(※) | -d ディレクトリ |
outputfile | 生成先ファイル名(※) | -o ファイル名 |
※生成先のディレクトリとファイル名は、どちらかしか宣言できない。
ディレクトリ構造が以下のようになっていることを仮定(要するにeclipseで普通に作った構造 で、パッケージ無し)。
C:\workspace3\JniJikken>tree フォルダ パスの一覧 C:. ├─bin …ここにbuild.xml ├─classes └─src
build.xmlはbinの下にあり、classes直下にあるJniJikken.classを元にヘッダーファイルを生成する。
生成するヘッダーファイルは、VC++のJniJikkenプロジェクトのディレクトリに作成するものとする。
build.xml:
<?xml version="1.0" encoding="Shift_JIS"?> <project name="jni_jikken" default="makeh" basedir=".." > <property name="h_dir" location="C:\hishidama\vcpp\JniJikken"/> <target name="makeh"> <javah classpath="classes" class="JniJikken" destdir="${h_dir}"/> </target> </project>
もし複数のクラスからヘッダーファイルを生成したい場合は、以下の様に書ける。
<javah classpath="classes" outputfile="${h_dir}/JniJikken.h""> <class name="JniJikken"/> <class name="Hoge"/> … </javah>
上と同じ例をWindowsのバッチファイルにすると、以下の様になる。
makeh.bat:
set WORKSPACE=C:\workspace3 set H_DIR=C:\hishidama\vcpp\JniJikken pushd %WORKSPACE%\JniJikken javah -classpath classes -d %H_DIR% JniJikken popd pause