Library doesn't want to load...

Ok so here’s the deal. I’m trying to figure out what’s wrong with loading jogl. This is for a plugin, so java.library.path is not always the same. So beforehand, I add the plugin directory path to java.library.path. I have it print out the paths, and so far so good:

String newLibPath = System.getProperty(“java.library.path”) + File.pathSeparator + libPath;
System.setProperty(“java.library.path”, newLibPath);

However when jogl loads, it says it cannot find jogl. This being strange, I try to move the libraries around. I put in this directory next (which was in java.library.path before i added the new directory):

/System/Library/PrivateFrameworks/JavaApplicationLauncher.framework/Resources

which is very naughty i know and can cause problems. but this time the library loaded just fine. I’ve double checked things here so many times. Now i’m sure I can just work with it in the framework directory to just develop the plugin, but if I want to release it, this is not acceptable. For some reason, it can find the library in that old path, but not at the new path I added. I also tried loading it like this:

String nativ = System.mapLibraryName(“jogl”);
System.load(libPath+"/"+nativ);

which works to load it, but then jogl does not detect it and uses System.loadLibrary(“jogl”) so it doesn’t work again.

another note, I tried immediately loading the library after I changed the path (I thought maybe the jogl loader had a different java.library.path property). This did not work, and it said it couldn’t find the library again. But as last time, when I moved it to a directory previously on java.library.path, it worked.

I tried puting the libraries at the root directory / and added that to the path instead, but it still would not load them.

please post any ideas you might have, this is getting very frustrating

The java.library.path property cannot be modified at runtime (okay, it can, but it has no effect). The virtual machine has to know the library path at startup (I’m not sure why, I think it has something to do with native linking). You can use the -D option of java to set it.

Like:
java -Djava.library.path=/path/to/lib FooClass

Hope that helps :slight_smile: