help-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: problem loading .so file in java


From: Nicola Pero
Subject: Re: problem loading .so file in java
Date: Mon, 29 Oct 2001 13:57:10 +0000 (GMT)

> The folowing error is generated while loading Security.so file from java  
> using System.loadLibrary("Security").
>  
> Exception in thread "main" java.lang.UnsatisfiedLinkError: 
> /usr/GNUstep/System/L
> ibrary/Frameworks/Security.framework/Versions/A/sparc/solaris2.8/gnu-gnu-gnu/lib
> Security.so.1.0.0: ld.so.1: 
> /LocalLibrary/NMS/java/jre/bin/../bin/sparc/native_t
> hreads/java: fatal: relocation error: file 
> /usr/GNUstep/System/Library/Framework
> s/Security.framework/Versions/A/sparc/solaris2.8/gnu-gnu-gnu/libSecurity.so.1.0.
> 0: symbol __objc_class_name_NXConstantString: referenced symbol not found
>         at java.lang.ClassLoader$NativeLibrary.load(Native Method)
>         at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1382)
>         at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1306)
>         at java.lang.Runtime.loadLibrary0(Runtime.java:749)
>         at java.lang.System.loadLibrary(System.java:820)
>         at Testso.main(Testso.java:6) 

 1. you need to use a shared libobjc (it must be called libobjc.so and not
    libobjc.a); compile and install gnustep-objc if you don't have it.

 2. when you load a library, all symbols in the library must be resolved.
    to get this, you might need to load other libraries before (to resolve 
    symbols which might otherwise be unresolved) ... which means you need 
    to load explicitly all library required in the correct order ... or 
    you can link the library itself against the required libraries, so
    that when you load the library, all the required libraries are
    automatically loaded ... if you use JIGS, this is how all works - 
    libgnustep-java.so is linked against libobjc.so and libgnustep-base.so
    and all libraries required by libgnustep-base.so, so when JIGS loads
    libgnustep-java.so, it automatically drags in all libraries needed 
    for gnustep-base based Objective-C sruff, and after that you can load
    any library using gnustep-base/Objective-C (even if not linked
    explicitly against libgnustep-base/libobjc) without need to do
    anything special ...

if you need to use an Objective-C library from Java, my suggestion is to
use JIGS - simply because all the work has already been done, and it works
out of the box ...




reply via email to

[Prev in Thread] Current Thread [Next in Thread]