JNI test

Ljubo Brglez kreit at siol.net
Sat Sep 29 15:08:47 CEST 2001


Zdravo!

1. HelloWorld.java
------------------------

class HelloWorld {
    public native void displayHelloWorld();

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



2. 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;
}  


3. ostale carovnije
-------------------------

javac HelloWorld.java
javah -classpath . -jni HelloWorld
gcc -I/opt/jdk1.3/include -I/opt/jdk1.3/include/linux -shared HelloWorldImp.c -o libhello.so
export LD_LIBRARY_PATH=.
java -classpath ../.:../jnitest jnitest.HelloWorld


4. exception
--------------------------

Exception in thread "main" java.lang.UnsatisfiedLinkError: displayHelloWorld
        at jnitest.HelloWorld.displayHelloWorld(Native Method)
        at jnitest.HelloWorld.main(HelloWorld.java:12)



Mislim, da bi lahko bil problem v pri gcc-ju. Verjetno napacni parametri, ko sem
delal shared library... Za solaris naj bi se naredilo tako:

cc -G -I/usr/local/java/include -I/usr/local/java/include/solaris HelloWorldImp.c -o libhello.so

Kako pa naj naredim z gcc ?

Any ideas ?


Ljubo Brglez



More information about the lugos-prog mailing list