1. Create a class that declares the native method. HelloWorld.java
class HelloWorld{
private native void print();
public static void main(String[] args){
new HelloWorld().print();
}
static{
System.loadLibrary("HelloWorld");
}
}
2. Use javac to compile the program
javac HelloWorld.java
3. Use javah to generate header file
javah -jni HwlloWorld
4. Write the C implementation of the native method.
Create file HelloWorld.c, and write:
#include <jni.h>
#include <stdio.h>
#include "HelloWorld.h"
JNIEXPORT void JNICALL Java_HelloWorld_print
(JNIEnv *env, jobject obj)
{
printf("Hello World!\n");
return;
}
5. Compile C code and generate native library
gcc -shared HelloWorld.c -fPIC -I /usr/lib/jvm/java-1.7.0-openjdk-amd64/include -I /usr/lib/jvm/java-1.7.0-openjdk-amd64/include/linux -o libHelloWorld.so
Notes:
-fPIC
6. Run the program using the java interpreter
Set current file to java classpath,
LD_LIBRARY_PATH=.
export LD_LIBRARY_PATH
Run java program:
java HelloWorld