aAPT
dDebian
fFFmpeg
jJava
mMercurial: Usage
oOCaml
pPostgreSQL

Home Code Java

Java: JNI

Example

Create Java class:

public class Main {
    private static native int noop();
    
    private static int testNative() {
        return Main.noop();
    }
    
    public static void main(String[] args) {
        testNative();
    }
    
    static {
        System.loadLibrary("foo");
    }
}

Comile:

javac Main.java

Generate C header:

javah Main

Add C implementation:

#include <jni.h>
#include "Main.h"
 
JNIEXPORT int JNICALL 
Java_Main_noop(JNIEnv *env, jobject obj) {
    return 0;
}

Compile C library:

cc -I/usr/lib/jvm/default-java/include/ -o libfoo.so -shared -Wl,-soname,foo.so Main.c -static -lc

Run:

java -Djava.library.path=. Main