mkdir -p org/lyle
cd org/lyle && vi TestJni.java
package org.lyle; public class TestJni { static { System.load("/usr/TestJni/libTestJni.so"); // 项目加载时从目录直接加载资源到内存 // 本处没有使用loadLibrary(),如果使用需要配置LD_LIBRARY_PATH } private native String get(String s); public static void main(String[] args){ org.lyle.TestJni hj = new org.lyle.TestJni(); String c = hj.get("asdfadf"); System.out.println("come from java: " + c); } }cd - && javac org/lyle/TestJni.java
javah org.lyle.TestJni
vi org_lyle_TestJni.c
#include "org_lyle_TestJni.h" JNIEXPORT jstring JNICALL Java_org_lyle_TestJni_get(JNIEnv *env, jobject jo, jstring js){ char * a = (char *)(*env)->GetStringUTFChars(env, js, NULL); printf("come from c: %s\r\n", a); return js; }gcc -fPIC -D_REENTRANT -I/opt/java7/include -I/opt/java7/include/linux -c org_lyle_TestJni.c /opt/java7/include 是jre的头文件的目录,目录中包含编译jni需要的jni.h文件 /opt/java7/include/linux 包含了编译在Linux下编译jni需要的jni_md.h文件
gcc -shared org_lyle_TestJni.o -o libTestJni.so
java org/lyle/TestJni
