环境
- gcc编译器
- Ubuntu14.04
- jdk1.8
编写java类
package com.itzyf;
public class HelloJNI
{
public native static String getString();
}
编译
$ javac HelloJNI.java
生成头文件
$ javah com.itzyf.HelloJNI
编写C文件
#include "com_itzyf_HelloJNI.h"
/*
* Class: com_itzyf_HelloJNI
* Method: getString
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_com_itzyf_HelloJNI_getString
(JNIEnv *env, jclass obj){
return ((*env)->NewStringUTF( env, "hello c" ));
}
编译
$ gcc -fPIC -D_REENTRANT -I/usr/lib/jvm/java-8-oracle/include -I/usr/lib/jvm/java-8-oracle/include/linux -c Hello.c
$ gcc -shared Hello.o -o libHello.so
完成java类
package com.itzyf;
public class HelloJNI
{
public native static String getString();
//加载so库
static
{
System.load("/home/zou/code/test/libHello.so");//这里使用全路径
}
public static void main(String[] args)
{
System.out.println(getString());
}
}
编译运行
文件结构
参考
参考博客地址:http://blog.chinaunix.net/uid-20180960-id-1972669.html