trouble compiling app w/ jni

stewart@neuron.com stewart@neuron.com
Sat Apr 14 07:52:00 GMT 2001


please ignore this. I was, in a static initializer, calling:

  System.loadLibrary("jvm");

which is ok under a sun-derived jvm, but kills this one (there is no libjvm
in the LD_LIBRARY_PATH).


> thanks. it now compiles. running it, however just says "Aborted" and
> quits. the first tree lines of main() print the command line args so
> it's not even getting that far. under gdb I get this:
> 
> 
> Starting program: /local/uml/opt/sys/foo 
> [New Thread 1024 (LWP 14550)]
> [New Thread 2049 (LWP 14551)]
> [New Thread 1026 (LWP 14552)]
> 
> Program received signal SIGABRT, Aborted.
> [Switching to Thread 1026 (LWP 14552)]
> 0x4036ffe1 in __kill () from /lib/libc.so.6
> (gdb) bt
> #0  0x4036ffe1 in __kill () from /lib/libc.so.6
> #1  0x40324ceb in raise (sig=6) at signals.c:65
> #2  0x40371582 in abort () at ../sysdeps/generic/abort.c:88
> #3  0x804a31b in __default_terminate () at ../../gcc/libgcc2.c:3034 #4 
> 0x804a33a in __terminate () at ../../gcc/libgcc2.c:3034
> #5  0x804b08a in throw_helper (eh=0x8094bb0, pc=0x402d327f,
> my_udata=0xbf7ff888, offset_p=0xbf7ff884) at ../../gcc/libgcc2.c:3168
> #6  0x804b33f in __rethrow (index=0x402d3280) at
> ../../gcc/libgcc2.c:3168 #7  0x401d2d22 in
> java::lang::Class::initializeClass (this=0x8050c20) at
> ../../../libjava/java/lang/natClass.cc:762
> #8  0x402d3280 in .LRTH348 () from /usr/lib/libgcj.so.1
> #9  0x5b000000 in ?? ()
> Cannot access memory at address 0xe8f689
> 
> 
> I'm not well versed in gdb. How do I track the reason for the class
> failing to initialize?
> 
>stewart
> 
> 
> 
>> Stewart wrote:
>>> and the LD_LIBRARY_PATH is set correctly. foo.class is dependent on
>>> syscall.class which contains native methods and uses libsyscall.so
>>> (sucessfully compiled).
>> 
>> You need to compile syscall.class with -fjni.  The documentation says:
>> "With gcj there are two options for writing native methods: CNI and
>> JNI. By default gcj assumes you are using CNI. If you are compiling a
>> class with native methods, and these methods are implemented using
>> JNI, then you must use -fjni. This option causes gcj to generate stubs
>> which will invoke the underlying JNI methods."
>> 
>> AG




More information about the Java mailing list