OSGi provides support for loading native libraries from components. This support includes loading
the correct library based on the OS of the target host. Each component’s classloader intercepts calls
to System.loadLibrary and loads libraries based on the configuration in the component’s manifest file.
As with any Java program, JNI must be used within the Java code wishing to call a native library.
1. 需在MANIFEST.MF中定义Header:Bundle-NativeCode
Attributes of the Bundle-NativeCode header:
(1)osname: The name of the target OS for the native library
(2)osversion: The target OS version for the native library
(3)processor: The target processor architecture for the native library
(4)language: The ISO code for a language associated with the library
(5)selection-filter: A selection filter that must be a valid filter expression indicating whether or
not the native code should be enabled
例如:
Bundle-ManifestVersion: 2
Bundle-SymbolicName: com.manning.osgi.native.code
Bundle-NativeCode: lib/libmathematical.so;osname=Linux;processor=i686,
lib/mathematical.dd;osname=Windows;processor=x86
(...)
2. 参考案例