QNX 6.2 and JNI

Hallo,
I try to create a shared library by execute this script under QNX 6.2.
Which should used in java (JNI) programm “HelloWorld”.

echo Creating HelloWorld…
j9c HelloWorld.java
javah -jni HelloWorld
qcc -Vgcc_ntox86_gpp -shared -g -o libhello.so -I
/usr/eclipse/ive/bin/include/ HelloWorldImp.c
LD_LIBRARY_PATH=/home/frank/jni:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
echo Run HelloWorld …
j9 -bp:/usr/eclipse/ive/lib/jclMax/classes.zip -cp:. HelloWorld

If I execute the script I get an error:

Creating HelloWorld…
Run HelloWorld …
Unhandled exception
Type=GPF vmState=0xffffffff
Handler1=0xb8242414 Handler2=0xb82314f8
Signal=0x0000000b
EFlags=0x00011246
EDI=0x08707c58 ESI=0xb83145ec EAX=0x0804a144
EBX=0xb034d310 ECX=0x0804a144 EDX=0x00000000
EBP=0x0804674c ESP=0x08046704 EIP=0xb032bd7b
CS=0x000000f3 SS=0x000000fb

Thread: main (priority 5) (LOCATION OF ERROR)
ffffffec
java/lang/Runtime.loadLibraryWithPath(Ljava/lang/String;Ljava/lang/ClassLoad
er;Ljava/lang/String;)V
003a
java/lang/Runtime.loadLibraryWithClassLoader(Ljava/lang/String;Ljava/lang/Cl
assLoader;)V
0007 java/lang/System.loadLibrary(Ljava/lang/String;)V
0002 HelloWorld.()V
ffffffec java/lang/Class.initializeImpl()V
006d java/lang/Class.initialize()V

Thread: Gc Thread (priority 5) (daemon)
…/comp: line 16: 995361 segmentation violation (core dumped)
j9 -bp:/usr/eclipse/ive/lib/jclMax/classes.zip -cp:. HelloWorld


Souces:

JavaFile:

class HelloWorld {
public native void displayHelloWorld();

static {
System.loadLibrary(“hello”);
}

public static void main(String[] args) {
System.out.println(“Hallo”);
new HelloWorld().displayHelloWorld();
System.out.println(“Hallo”);
}
}

C-File:
#include <jni.h>
#include “HelloWorld.h”
#include <stdio.h>

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

Has anybody an idea what’s wrong???

mfg


Frank

Don’t compile it with the -V flag, just use qcc. There is an issue
with bringing in the GNU C++ library via a shared lib in an executable
that wasn’t also linked against the C++ lib. Since your JNI is in C,
there is no need to compile it as C++.

chris


Frank Unkelbach <Frank.u1@gmx.de> wrote:

Hallo,
I try to create a shared library by execute this script under QNX 6.2.
Which should used in java (JNI) programm “HelloWorld”.

echo Creating HelloWorld…
j9c HelloWorld.java
javah -jni HelloWorld
qcc -Vgcc_ntox86_gpp -shared -g -o libhello.so -I
/usr/eclipse/ive/bin/include/ HelloWorldImp.c
LD_LIBRARY_PATH=/home/frank/jni:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
echo Run HelloWorld …
j9 -bp:/usr/eclipse/ive/lib/jclMax/classes.zip -cp:. HelloWorld

If I execute the script I get an error:

Creating HelloWorld…
Run HelloWorld …
Unhandled exception
Type=GPF vmState=0xffffffff
Handler1=0xb8242414 Handler2=0xb82314f8
Signal=0x0000000b
EFlags=0x00011246
EDI=0x08707c58 ESI=0xb83145ec EAX=0x0804a144
EBX=0xb034d310 ECX=0x0804a144 EDX=0x00000000
EBP=0x0804674c ESP=0x08046704 EIP=0xb032bd7b
CS=0x000000f3 SS=0x000000fb

Thread: main (priority 5) (LOCATION OF ERROR)
ffffffec
java/lang/Runtime.loadLibraryWithPath(Ljava/lang/String;Ljava/lang/ClassLoad
er;Ljava/lang/String;)V
003a
java/lang/Runtime.loadLibraryWithClassLoader(Ljava/lang/String;Ljava/lang/Cl
assLoader;)V
0007 java/lang/System.loadLibrary(Ljava/lang/String;)V
0002 HelloWorld.()V
ffffffec java/lang/Class.initializeImpl()V
006d java/lang/Class.initialize()V

Thread: Gc Thread (priority 5) (daemon)
./comp: line 16: 995361 segmentation violation (core dumped)
j9 -bp:/usr/eclipse/ive/lib/jclMax/classes.zip -cp:. HelloWorld


Souces:

JavaFile:

class HelloWorld {
public native void displayHelloWorld();

static {
System.loadLibrary(“hello”);
}

public static void main(String[] args) {
System.out.println(“Hallo”);
new HelloWorld().displayHelloWorld();
System.out.println(“Hallo”);
}
}

C-File:
#include <jni.h
#include “HelloWorld.h”
#include <stdio.h

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

Has anybody an idea what’s wrong???

mfg


Frank


Chris McKillop <cdm@qnx.com> “The faster I go, the behinder I get.”
Software Engineer, QSSL – Lewis Carroll –
http://qnx.wox.org/