As far as I can tell, currently, System.loadLibrary() is mostly unusable
for Java libraries because they cannot influence the library search
path. If you want to transparently load a DSO, you need to use
System.load() and hard-code the path. This probably means patching
upstream sources.
Debian patches the default search path so that System.loadLibrary()
searches /usr/lib/jni for DSOs with native code. This means that
classes which call System.loadLibrary() just work, assuming that the
Debian package installs its DSOs into /usr/lib/jni.
Can we do something similar in Fedora? We probably want /usr/lib/jni
and /usr/lib64/jni, for consistency with the rest of the system.
The upstream default search path starts with
"/usr/java/packages/lib/amd64" (and variants for other architectures),
but this isn't mentioned in the Fedora guidelines. I'm also not sure if
we want to use this file system location because it doesn't look
particularly FHS-compliant. But the proprietary JDKs could install a
symlink there so that /usr/lib{,64}/jni is searched as well.
--
Florian Weimer / Red Hat Product Security