native声明的方法是java与c/c++的接口
public class CheckFile
{
public native void displayHelloWorld();
static{
System.loadLibrary("test11"); } //装载库test11.DLL
public static void main(String[] args)
{
new CheckFile().displayHelloWorld();
}
}
1)javac CheckFile.java编译生成CheckFlie.class
2)javah -jni CheckFile生成CheckFile.h文件
用vc++6.0打开
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <C:/Program Files/Java/jdk1.6.0_10/include/jni.h>//包含jni.h路径
/* Header for class CheckFile */
#ifndef _Included_CheckFile
#define _Included_CheckFile
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: CheckFile
* Method: displayHelloWorld
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_CheckFile_displayHelloWorld(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
3)根据CheckFile.h编写CheckFile.c文件
#include "CheckFile.h"
JNIEXPORT void JNICALL Java_CheckFile_displayHelloWorld(JNIEnv *env, jobject obj)
{
printf("Hello world!/n");
return;
}
4)vc6.0创建test11.dll
#include <C:/Program Files/Java/jdk1.6.0_10/include/jwin32/jni_md.h>
5)java CheckFile
Hello world!
【转】步骤:
1、在Java中声明native()方法,然后编译;
2、用javah产生一个.h文件;
3、写一个.cpp/c文件实现native导出方法,其中需要包含第二步产生的.h文件(注意其中又包含了JDK带的jni.h文件);
4、将第三步的.cpp文件编译成动态链接库文件;
5、在Java中用System.loadLibrary()方法加载第四步产生的动态链接库文件,这个native()方法就可以在Java中被访问了
JAVA本地方法适用的情况
1.为了使用底层的主机平台的某个特性,而这个特性不能通过JAVA API访问
2.为了访问一个老的系统或者使用一个已有的库,而这个系统或这个库不是用JAVA编写的
3.为了加快程序的性能,而将一段时间敏感的代码作为本地方法实现