VLC libvlc.dynlib v3.0.0 failing to open on MacOS Sierra

434 views
Skip to first unread message

David F

unread,
Apr 11, 2017, 2:27:58 PM4/11/17
to Java Native Access

Using the latest git of JNA (jna.jar).
Oracle Java 1.8.60
MacOS Sierra
MacBook Pro

Using 3.10.1 of vlcj, and only opening the library fails. 2.2.4 works.


NOTE: I know I'm using vlcj, but the error is coming when jna tries to open the library. It's not returning a handle. I have ONLY swapped VLC.app v2.2.4 for VLC.app v3.0.0. Everything else is the same.


import com.sun.jna.NativeLibrary;
import uk.co.caprica.vlcj.binding.LibVlc;
import uk.co.caprica.vlcj.runtime.RuntimeUtil;


public class Main {
private static final String NATIVE_LIBRARY_SEARCH_PATH
= "/Users/david/JavaProjects/vlcjtest/VLC.app/Contents/MacOS/lib/";
public static void main(String[] args) {
NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), NATIVE_LIBRARY_SEARCH_PATH);
System.out.println(LibVlc.INSTANCE.libvlc_get_version());
}
}



Result:
Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'vlc': Native library (darwin/libvlc.dylib) not found in resource path ([file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/charsets.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/deploy.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/ext/cldrdata.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/ext/dnsns.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/ext/jaccess.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/ext/jfxrt.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/ext/localedata.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/ext/nashorn.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/ext/sunec.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/ext/zipfs.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/javaws.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/jce.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/jfr.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/jfxswt.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/jsse.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/management-agent.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/plugin.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/resources.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/rt.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/lib/ant-javafx.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/lib/dt.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/lib/javafx-mx.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/lib/jconsole.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/lib/packager.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/lib/sa-jdi.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/lib/tools.jar, file:/Users/david/JavaProjects/vlcjtest/out/production/vlcjtest/, file:/Users/david/.m2/repository/net/java/dev/jna/jna-platform/4.1.0/jna-platform-4.1.0.jar, file:/Users/david/.m2/repository/org/slf4j/slf4j-api/1.7.10/slf4j-api-1.7.10.jar, file:/Users/david/JavaProjects/vlcjtest/libs/jna.jar, file:/Applications/IntelliJ%20IDEA%20CE.app/Contents/lib/idea_rt.jar])
at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:303)
at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:427)
at com.sun.jna.Library$Handler.(Library.java:179)
at com.sun.jna.Native.loadLibrary(Native.java:571)
at com.sun.jna.Native.loadLibrary(Native.java:546)
at uk.co.caprica.vlcj.binding.LibVlc.(LibVlc.java:116)
at com.daford.vlctest.Main.main(Main.java:23)


If I ONLY swap VLC.app in same location, 2.2.4 results ok:
2.2.4 Weatherwax

David F

unread,
Apr 11, 2017, 3:40:44 PM4/11/17
to Java Native Access
Further investigation with only JNA (no vlcj):

import com.sun.jna.Native;
import com.sun.jna.NativeLibrary;

public class Main {


public static void main(String[] args) {

        Native.DEBUG_LOAD = true;
Native.DEBUG_JNA_LOAD = true;
//NativeLibrary.addSearchPath("vlc", "/Applications/VLC.app/Contents/MacOS/lib/");
NativeLibrary.addSearchPath("vlc", "/Users/david/Applications/VLC.app/Contents/MacOS/lib/");
System.out.println(NativeLibrary.getInstance("vlc"));
}
}

2nd one works, 1st give unsatisifiedlinkerror.

Here's the good log:

Looking for library 'vlc'
Adding paths from jna.library.path: null
Trying /Users/david/Applications/VLC.app/Contents/MacOS/lib/libvlc.dylib
Found library 'vlc' at /Users/david/Applications/VLC.app/Contents/MacOS/lib/libvlc.dylib
Native Library </Users/david/Applications/VLC.app/Contents/MacOS/lib/libvlc.dylib@140575976364832>

Here's the bad log:

Looking for library 'vlc'
Adding paths from jna.library.path: null
Trying /Applications/VLC.app/Contents/MacOS/lib/libvlc.dylib
Adding system paths: [/usr/lib, /usr/lib]
Trying /Applications/VLC.app/Contents/MacOS/lib/libvlc.dylib
Looking for matching frameworks
Looking in classpath from sun.misc.Launcher$AppClassLoader@14dad5dc for vlc
Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'vlc': Native library (darwin/libvlc.dylib) not found in resource path ([file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/charsets.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/deploy.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/ext/cldrdata.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/ext/dnsns.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/ext/jaccess.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/ext/jfxrt.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/ext/localedata.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/ext/nashorn.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/ext/sunec.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/ext/zipfs.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/javaws.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/jce.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/jfr.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/jfxswt.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/jsse.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/management-agent.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/plugin.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/resources.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/rt.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/lib/ant-javafx.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/lib/dt.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/lib/javafx-mx.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/lib/jconsole.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/lib/packager.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/lib/sa-jdi.jar, file:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/lib/tools.jar, file:/Users/david/JavaProjects/jnatest/out/production/jnatest/, file:/Users/david/JavaProjects/jnatest/libs/jna.jar, file:/Applications/IntelliJ%20IDEA%20CE.app/Contents/lib/idea_rt.jar])
at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:303)
at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:427)
at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:369)
at Main.main(Main.java:12)

-----------------------

Timothy Wall

unread,
Apr 11, 2017, 10:37:56 PM4/11/17
to jna-...@googlegroups.com
You're loading from two different locations.  I take it one version is in your home Applications and the other is in the System /Applications?

What version OSX are you running on?  What version does the newer vlcj require (I think "otool" is the OSX equivalent of ldd, it may give you info on the required OSX runtime as well.

--
You received this message because you are subscribed to the Google Groups "Java Native Access" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jna-users+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Message has been deleted

Cyril APAN

unread,
Jun 13, 2018, 6:53:06 AM6/13/18
to Java Native Access
I also have this bug but it doesn't matter where VLC is installed, I always get the bug.
I'm using macOS 10.13.4 (10.13.5 has only been released 10 days ago), VLC 3.0.3 (the last version of VLC) and JNA 4.5.1.
With VLC 2.2.8 (the last version of the 2.x.x branch), the library gets loaded without any issues. But with VLC 3.0.3 (the last of the 3.x.x branch), I get the UnsatisfiedLinkError exception.

When I'm debugging JNA, I get to line 194 of com.sun.jna.NativeLibrary.java and the exception message is the following:

UnsatisfiedLinkError: dlopen(<path to VLC>/VLC.app/Contents/MacOS/lib/libvlc.dylib, 9):
Library not loaded: @rpath/libvlccore.dylib
  Referenced from: <path to VLC>/VLC.app/Contents/MacOS/lib/libvlc.dylib
  Reason: image not found

This message doesn't come up without directly debugging JNA as it's swallowed and other things get done before raising again the exception. The exception is on the side of the native code and I don't know how to fix this. Any idea?
To unsubscribe from this group and stop receiving emails from it, send an email to jna-users+...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages