Does your dll depend upon some other dll which cannot be found/loaded when 
you are running felix?

BJ Hargrave
Senior Technical Staff Member, IBM
OSGi Fellow and CTO of the OSGi Alliance
[EMAIL PROTECTED]
Office: +1 407 849 9117 Mobile: +1 386 848 3788



"Arnaud Quiblier" <[EMAIL PROTECTED]> 
08/16/2006 07:03 AM
Please respond to
[email protected]


To
[email protected]
cc

Subject
FELIX-26: Improve native library matching algorithm






Well, I easyly found where the changes have to occured (including
modifications of parsing header) and I will explain this when I will 
update
the isuue.
But before to begin, I want to write a (very) small bundle loading a 
native
lib.
And that's the problem ... I just can't !!!

So I write a little class HelloWorldNative with a sole native method
printNative() which call a C method compiled into HelloWorldNative.dll
I test my sample out of Felix, and it works fine.

So I bundle it. My activator create an instance of the HelloWorldNative
class.
This contains a static loading of the native library.
I'm sure the library is loaded, cause when it's not present, the error is
quite explicit.
So the loading is OK, but it seems that's the VM checks all methods and
verifies that's a correct implementation exists in the dll.
And there's my bug ... It can't find the corresponding native method !!!
The tracelog :

[...]
DEBUG: WIRE: 4.0 -> org.osgi.framework -> 0
Started.
doWork.
+++ new   <<< new HelloWorldNative() call
+++ loading...   <<< before System.loadLibrary()
DEBUG: R4SearchPolicyCore.findLibrary()...
DEBUG: path: C:\Documents and Settings\Arnaud
Quiblier\.felix\a\bundle4\version0.0\lib\HelloWorldNative.dll   <<< dll's
path is OK
java.lang.UnsatisfiedLinkError: C:\Documents and Settings\Arnaud
Quiblier\.felix\a\bundle4\version0.0\lib\HelloWorldNative.dll: La 
procédure
spécifiée est introuvable   <<< Sorry it's french ... but this is my 
problem
=====  trace  =====
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1586)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1495)
    at java.lang.Runtime.loadLibrary0(Runtime.java:788)
    at java.lang.System.loadLibrary(System.java:834)
    at HelloWorldNative.<clinit>(HelloWorldNative.java:8)
    at Activator.doWork(Activator.java:26)
    at Activator.start(Activator.java:10)
    at org.apache.felix.framework.Felix._startBundle(Felix.java:1216)
    at org.apache.felix.framework.Felix.startBundle(Felix.java:1149)
    at org.apache.felix.framework.Felix.setFrameworkStartLevel(Felix.java
:768)
    at org.apache.felix.framework.StartLevelImpl.run(StartLevelImpl.java
:220)
    at java.lang.Thread.run(Thread.java:534)
--- loaded.
--- new
[...]

Any idea is welcome ...

-- 
</arnaud>


Reply via email to