Java
Einiges für JNI

* Hello World unter Linux
* Aufruf
* Pfad setzen
 



Hello World unter Linux
Hier mal das typische HelloWorld-Programm (es funktioniert wirklich!)
 
Datei HelloWorld.java


class HelloWorld 
{
    public native void displayHelloWorld();
    static { System.loadLibrary("hello"); }
    public static void main(String[] args) 
    {
      new HelloWorld().displayHelloWorld();
    }
}
Datei HelloWorldImp.c


#include <jni.h>
#include "HelloWorld.h"
#include <stdio.h>

 JNIEXPORT void JNICALL 
Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj) 
{
    printf("Hello world!\n");
    return;
}

1. Datei HelloWorld.java schreiben
2. Compilieren: javac HelloWorld.java
3. HeaderDatei erstellen: javah HelloWord
4. Datei HelloWorldImp.c schreiben
5. Compilieren: gcc -shared -I/usr/lib/java/include -I/usr/lib/java/include/linux -I. HelloWorldImp.c -o libhello.so
6. Pfad setzen: export LD_LIBRARY_PATH=/home/katrin/JNI
7. Laufen lassen: java HelloWorld



Aufruf
Linux gcc -shared -I/usr/lib/java/include -I/usr/lib/java/include/linux -I. HelloWorldImp.c -o libhello.so
Windows cl -Ic:\java\include -Ic:\java\include\win32 -LD HelloWorldImp.c -Fehello.dll (??? Visual C)



Pfad setzen
Linux export LD_LIBRARY_PATH=/home/katrin/JNI
Windows