Cargar DLL (usando JNA) dentro de un paquete OSGi

OSGi no puede encontrar mi archivo DLL, y parece que no puedo entender por qué.

Actualmente tengo el archivo DLL (foo.dll) en la raíz de mi paquete, también he intentado tenerlo en unlibs directorio.

El Manifiesto para el paquete en cuestión se parece a esto:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: foobundle
Bundle-SymbolicName: com.foo.bar
Bundle-Version: 1.0.0
Bundle-Vendor: me
Import-Package: com.sun.jna,
 com.sun.jna.ptr,
 com.sun.jna.win32
Export-Package: com.foo.bar
Bundle-NativeCode: foo.dll;
 osname=WindowsXP;
 processor=x86

Luego, en mi interfaz JNA, realizo una loadLibrary (según la documentación):

public interface MyFooInterface extends com.sun.jna.Library{
    static final MyFooInterface INSTANCE = (MyFooInterface)com.sun.jna.Native.loadLibrary("foo", MyFooInterface .class);

    // specific interface defs here...
}

Luego en otra clase intento usar la interfaz JNA

// ...code
int var = MyFooInterface.INSTANCE.bar();
// ...more code

He suministrado JNA a través de otro paquete (que exporta com.sun.jna y los otros paquetes importados anteriormente), pero también he intentado empaquetarlo con el paquete definido aquí (y lo he agregado al classpath en ese caso, etc.).

También he tratado de especificarBundle-NativeCode: /foo.dll.

También de interés, estas son las propiedades relevantes de OSGi (que detuve usandogetprop)

org.osgi.framework.os.name=WindowsXP
org.osgi.framework.processor=x86

Incluso después de todo esto (y con cada prueba que hice) siempre termino con el siguiente error (y una traza de pila no se muestra):

java.lang.UnsatisfiedLinkError: Unable to load library 'foo': The specified module could not be found.

... entonces, ¿qué me estoy perdiendo?

Editar: También debo tener en cuenta que he probado y tuve éxito el código de interfaz JNA y la DLL con la que habla como parte de un programa de prueba JUnit.

Editar 2: Agregar este código a la clase que está llamando a la biblioteca parece permitir que JNA encuentre la biblioteca (cuandoNative.loadLibrary se llama más tarde). Parece que debería poder evitar esta llamada en base a la directiva Bundle-NativeCode en el Manifiesto. Claramente, una vez que se carga la biblioteca, Native.loadLibrary capta la instancia existente de la misma, pero prefiero no depender de esta táctica muy específica del orden.

static{
    System.loadLibrary("foo");
}

Respuestas a la pregunta(3)

Su respuesta a la pregunta