読者です 読者をやめる 読者になる 読者になる

Jacobでネイティヴメソッドコール

JVLink Java JNI

以前紹介したJVLink。Java未対応なのでJNI経由でJVLinkのメソッドをコールしなくてはいけません。単純に生のJNIでやるとすると、Cのモジュールをコンパイルしたり、Javaでのラッパーを用意する必要があるのでちょっと手間です。
その手間を省くためにJacobというライブラリを使用します。Jacobを使えば、名称指定でネイティヴメソッドをコールできるようになります。試しにJVLinkのJVInitメソッドをJacobでコールすると以下のようなコードになります。


import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;

public class JVLinkSample {

private ActiveXComponent activeXComponent = new ActiveXComponent("JVDTLab.JVLink.1");

public int jvInit(String sid) {
Variant variant = Dispatch.call(activeXComponent, "JVInit", sid);
return variant.getInt();
}

}


Dispatch#callメソッドでコールするメソッドを文字列で指定します。JNI用のクラスを作る必要もなく、お手軽になります。
※このメソッドを正しく動作させるには、jacobとJVLinkのDLLをsystem32配下に配置する必要があります。