SerCeMan / jnr-fuse

FUSE implementation in Java using Java Native Runtime (JNR)
MIT License
363 stars 86 forks source link

Mac OS X can't find libfuse.dylib #106

Closed stanimirivanovde closed 3 years ago

stanimirivanovde commented 3 years ago

Hey, I just encountered an error where jnr-fuse will refuse to mount a volume with "Image not found" unsatisfied link error. I looked into it and thought it is due to the fact they changed osxfuse to macfuse. But looking at it further pointed to the path being an issue. If I add the following line before mounting, then everything works:

System.setProperty("java.library.path", "/usr/local/lib/");

The library is installed correctly, and the kernel extension is loaded etc. I'm not sure if this is just me but I'm running on a new 16" Macbook Pro with latest Big Sur update.

I looked at your code and saw that you're not passing absolute paths but rather the lib name:

private static final String[] osxFuseLibraries = {"fuse4x", "osxfuse", "macfuse", "fuse"};

Not sure if it makes sense for me to do a pull request since this can be worked around with the line of code I posted above.

SerCeMan commented 3 years ago

Hey, @stanimirivanovde!

Thanks for reporting! The path is included now by default for MacOS: https://github.com/SerCeMan/jnr-fuse/blob/00750de4067d9aec8adba61f76965cca56c163a3/src/main/java/ru/serce/jnrfuse/AbstractFuseFS.java#L47-L51