If the title made sense to you, you probably already understand but here's the problem.
I use NetBeans for development but any Java application that is started by the launcher has this problem.
Java searches for external dynamic libraries based on java.library.path which is set when the JVM starts from LD_LIBRARY_PATH. But Ubuntu doesn't let us set LD_LIBRARY_PATH anywhere except in the user's .profile (or .cshrc..) so it's not available to anything run from the application launcher.
Java doesn't use ld.so.conf and bash doesn't allow dots (.) in environment variable names.
There must be a way to affect LD_LIBRARY_PATH or java.library.path for programs started by the launcher but I can't find it.
Has anyone solved this? I have come up with a few work-arounds that work for development but none I'd like to include in a release.
It's not what your program can do, it's what your users do with the program.
I don't have my Ubuntu machine here, but I think it works like this on Ubuntu:
In /etc/ld.conf.d (the name of a directory; I'm not 100% sure this is right) there are little text files that contain library paths. The linker, ld, has a cache somewhere that is built up from those files. You can add a text file yourself in that directory (ofcourse you have to be root to put it there) with the path to your native library. After you did that, run sudo ldconfig to rebuild the cache for the linker.