java 远程调用native 方法_java JNI native本地方法调用

java 可以通过JNI调用native本地方法,实现对其它非java语言编写的接口(C,C++)的调用。在类当中只需要定义好调用的方法,加载具体实现的动态库。

package studyJNIMain;

public class Main {

static {

System.out.println(System.getProperty("java.library.path"));

System.loadLibrary("test");

}

public static void main(String[] args) {

Main m=new Main();

m.test(1);

}

native public int test(int in);

}

调用步骤如下:

编写生成main.class。其中System.getProperty("java.library.path")是查看JVM可访问的动态库地址,System.loadLibrary("test")是加载将要实现native方法的库。

打开命令行,进入到存放class文件的根目录,使用命令javah -jni studyJNIMain.Main。会生成一个studyJNIMain_Main.h文件。我们的test方法变成了JNIEXPORT jint JNICALL Java_studyJNIMain_Main_test(JNIEnv *, jobject, jint); /* DO NOT EDIT THIS FILE - it is machine generated */

#include

/* Header for class studyJNIMain_Main */

#ifndef _Included_studyJNIMain_Main

#define _Included_studyJNIMain_Main

#ifdef __cplusplus

extern "C" {

#endif

/*

* Class:     studyJNIMain_Main

* Method:    test

* Signature: (I)I

*/

JNIEXPORT jint JNICALL Java_studyJNIMain_Main_test

(JNIEnv *, jobject, jint);

#ifdef __cplusplus

}

#endif

#endif

3.利用vc编写test.dll。选择new->projects(选择Win32 Dynamic-Link Library)->OK->An ampty DLL project->Finish。

4.把studyJNIMain_Main.h加载到项目当中,创建test.cpp包含studyJNIMain_Main.h头文件,实现JNICALL Java_studyJNIMain_Main_test(JNIEnv *, jobject, jint);方法就行了,编译生成动态库test.dll。

5.把test.dll放在System.getProperty("java.library.path")获取的地址当中,运行mian。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值