//第一步,
public class JavaToCTest
{
private native void sayHello();//声明本地方法.
static
{
System.loadLibrary("JavaToCTest");//需要加载的so库文件的名称,在linux中会在上前缀"lib"+库文件的名称.
}
public static void main(String[] args)
{
new JavaToCTest().sayHello();
}
}
//第二步,在linux系统中使用如下方法生成头文件.
javah -jni JavaToCTest 使用该方法生成的头文件如下. 生成的文件是: JavaToCTest.h
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class JavaToCTest */
#ifndef _Included_JavaToCTest
#define _Included_JavaToCTest
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: JavaToCTest
* Method: printlns
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_JavaToCTest_sayHello (JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
//第三步,编写 c 代码, 该文件的名称为 JavaToCTest.c
内容如下:
#include <stdio.h>
#include <jni.h>
#include "JavaToCTest.h"
JNIEXPORT void JNICALL Java_JavaToCTest_sayHello(JNIEnv *env ,jobject obj)
{
printf("Java To C !!!!! \n");
return;
}
//第四步:
编译生成库文件. 这个文件的文件名称为: libJavaToCTest.so
gcc -I/usr/lib/jvm/java-6-openjdk/include/linux -I/usr/lib/jvm/java-6-openjdk/include/ -fPIC -shared -o libJavaToCTest.so JavaToCTest.c
//第五步:
运行java文件.
为了让java找到此so,运行:export LD_LIBRARY_PATH=.,将当前目录加入此环境变量。
java JavaToCTest
如果看到 java To C 说明调用成功.