请先配置Java环境...
1.创建Java文件Hello.java
public class Hello{
	public native void HelloWorld();
	static{
		System.loadLibrary("hello");
	}
	
	public static void main(String[] args){
	
		new Hello().HelloWorld();
	}
}2.编辑Java
javac Hello.java3.生成java头文件
javah -jni Hello[root@BigData116 tools]# ls
Hello.class  Hello.h  Hello.java多了一个.h 文件
4. more Hello.h
[root@BigData116 tools]# more Hello.h 
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class Hello */
#ifndef _Included_Hello
#define _Included_Hello
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     Hello
 * Method:    HelloWorld
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_Hello_HelloWorld
  (JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif5.编辑c文件
[root@BigData116 tools]# touch Hello.c
[root@BigData116 tools]# vi Hello.c
#include <stdio.h>
#include <stdlib.h>
#include "jni.h"
#include "Hello.h"
JNIEXPORT void JNICALL JNICALL Java_Hello_HelloWorld (JNIEnv *env, jobject obj)
{
	printf("hello world ,i am from Hello.c");
}6.-fPIC 选项作用于编译阶段,告诉编译器产生与位置无关代码
gcc -fPIC -I $JAVA_HOME/include -I $JAVA_HOME/include/linux -c Hello.c[root@BigData116 tools]# ls
Hello.c  Hello.class  Hello.h  Hello.java  Hello.o多了个.o 文件
7.生成共享库格式.
动态链接文件称为动态共享对象 (Dynamic Shared Objects,DSO),一般是以 .so 为扩展名的文件
[root@BigData116 tools]# gcc -shared Hello.o -o 8.运行测试
[root@BigData116 tools]# java Hello
Exception in thread "main" java.lang.UnsatisfiedLinkError: no hello in java.library.path
	at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
	at java.lang.Runtime.loadLibrary0(Runtime.java:870)
	at java.lang.System.loadLibrary(System.java:1122)
	at Hello.<clinit>(Hello.java:4)设置library 环境 bash_profile
export LD_LIBRARY_PATH=/root/tools使环境生效
source ~/.bash_profile运行 java Hello
[root@BigData116 tools]# java Hello
hello world ,i am from Hello.c
总的来说,将一个本地方法链接到Java程序中需要经过以下5个步骤:
- 在Java类中声明一个本地方法;
- 运行javah以获得包含该方法的C声明的头文件;
- 用C实现该本地方法;
- 将代码置于共享类库中;
- 在Java程序中加载该类库。
 
 
                     
            
        













 
                    

 
                 
                    