Macos Mac OSX上的VLCJ未满足链路错误(darwin/libvlc.dylib)

Macos Mac OSX上的VLCJ未满足链路错误(darwin/libvlc.dylib),macos,libvlc,unsatisfiedlinkerror,vlcj,Macos,Libvlc,Unsatisfiedlinkerror,Vlcj,我正在尝试初始化VLCJ,以便作为我正在开发的应用程序的一部分进行一些流式处理。按照,我将使用以下代码尝试加载库: NativeLibrary.addSearchPath( RuntimeUtil.getLibVlcLibraryName(), "/Applications/VLC/Contents/MacOS/lib" ); Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class); 当我运行它时

我正在尝试初始化VLCJ,以便作为我正在开发的应用程序的一部分进行一些流式处理。按照,我将使用以下代码尝试加载库:

NativeLibrary.addSearchPath(
    RuntimeUtil.getLibVlcLibraryName(), "/Applications/VLC/Contents/MacOS/lib"
    );
Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);
当我运行它时,会出现以下错误:

Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'vlc': JNA native support (darwin/libvlc.dylib) not found in resource path (/Users/iamparker/Documents/workspace/VLCStreamer/target/classes:/usr/jar/vlc/vlcj-3.0.1-javadoc.jar:/usr/jar/vlc/vlcj-3.0.1-sources.jar:/usr/jar/vlc/vlcj-3.0.1-test-sources.jar:/usr/jar/vlc/vlcj-3.0.1-tests.jar:/usr/jar/vlc/vlcj-3.0.1.jar:/usr/jar/vlc/jna-4.1.0.jar:/usr/jar/vlc/jna-platform-4.1.0.jar)
at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:220)
at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:322)
at com.sun.jna.Library$Handler.<init>(Library.java:142)
at com.sun.jna.Native.loadLibrary(Native.java:387)
at com.sun.jna.Native.loadLibrary(Native.java:366)
at com.thundercats.vlcstreamer.Main.loadNative(Main.java:33)
at com.thundercats.vlcstreamer.Main.main(Main.java:16)
线程“main”java.lang.UnsatisfiedLinkError中出现异常:无法加载库“vlc”:在资源路径中找不到JNA本机支持(darwin/libvlc.dylib)(/Users/iamparker/Documents/workspace/VLCStreamer/target/classes:/usr/jar/vlcj-3.0.1-javadoc.jar:/usr/jar/vlc/vlcj-3.0.1-sources.jar:/usr/jar/vlc/vlcj-3.0.1-tests.jar:/usr/jar/vlc/vlcj-3.0.1-tests.jar:/usr/jar/vlc/vlc/vlcj-3.0.1.jar:/usr/jna/4.1.0.jar/jna/jar/jna.1.jar/jna/jna/jna/jna/jna/jna/jna/jna/jna/jna/jna/jna/jna/jr 位于com.sun.jna.nativellibrary.loadLibrary(nativellibrary.java:220) 位于com.sun.jna.nativellibrary.getInstance(nativellibrary.java:322) 位于com.sun.jna.Library$Handler。(Library.java:142) 位于com.sun.jna.Native.loadLibrary(Native.java:387) 位于com.sun.jna.Native.loadLibrary(Native.java:366) 位于com.thundercats.vlcstreamer.Main.loadNative(Main.java:33) 位于com.thundercats.vlcstreamer.Main.Main(Main.java:16) 看起来它甚至没有搜索我给它的路径。在这个目录中有一个非常好的libvlc.dylib

以下是运行VLCJ NativeDiscoveryTest的输出:

vlcj: (Info.java:70)                                 | INFO  | vlcj: <version not available>
vlcj: (Info.java:71)                                 | INFO  | java: 1.6.0_65 Apple Inc.
vlcj: (Info.java:72)                                 | INFO  | java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
vlcj: (Info.java:73)                                 | INFO  | os: Mac OS X 10.8.5 x86_64
vlcj: (NativeDiscovery.java:98)                      | DEBUG | discover()
vlcj: (NativeDiscovery.java:101)                     | DEBUG | jnaLibraryPath=null
vlcj: (NativeDiscovery.java:106)                     | DEBUG | discoveryStrategy=uk.co.caprica.vlcj.discovery.linux.DefaultLinuxNativeDiscoveryStrategy@42b1b4c3
vlcj: (NativeDiscovery.java:109)                     | DEBUG | supported=false
vlcj: (NativeDiscovery.java:106)                     | DEBUG | discoveryStrategy=uk.co.caprica.vlcj.discovery.windows.DefaultWindowsNativeDiscoveryStrategy@60072ffb
vlcj: (NativeDiscovery.java:109)                     | DEBUG | supported=false
vlcj: (NativeDiscovery.java:106)                     | DEBUG | discoveryStrategy=uk.co.caprica.vlcj.discovery.mac.DefaultMacNativeDiscoveryStrategy@77df38fd
vlcj: (NativeDiscovery.java:109)                     | DEBUG | supported=true
vlcj: (AbstractNativeDiscoveryStrategy.java:49)      | DEBUG | discover()
vlcj: (AbstractNativeDiscoveryStrategy.java:54)      | DEBUG | directoryNames=[/Users/iamparker/Documents/workspace/NativeDiscoveryTest, /usr/bin, /bin, /usr/sbin, /sbin, /Applications/VLC.app/Contents/MacOS/lib]
vlcj: (AbstractNativeDiscoveryStrategy.java:57)      | DEBUG | directoryName=/Users/iamparker/Documents/workspace/NativeDiscoveryTest
vlcj: (AbstractNativeDiscoveryStrategy.java:95)      | DEBUG | Failed to matched all required files
vlcj: (AbstractNativeDiscoveryStrategy.java:57)      | DEBUG | directoryName=/usr/bin
vlcj: (AbstractNativeDiscoveryStrategy.java:95)      | DEBUG | Failed to matched all required files
vlcj: (AbstractNativeDiscoveryStrategy.java:57)      | DEBUG | directoryName=/bin
vlcj: (AbstractNativeDiscoveryStrategy.java:95)      | DEBUG | Failed to matched all required files
vlcj: (AbstractNativeDiscoveryStrategy.java:57)      | DEBUG | directoryName=/usr/sbin
vlcj: (AbstractNativeDiscoveryStrategy.java:95)      | DEBUG | Failed to matched all required files
vlcj: (AbstractNativeDiscoveryStrategy.java:57)      | DEBUG | directoryName=/sbin
vlcj: (AbstractNativeDiscoveryStrategy.java:95)      | DEBUG | Failed to matched all required files
vlcj: (AbstractNativeDiscoveryStrategy.java:57)      | DEBUG | directoryName=/Applications/VLC.app/Contents/MacOS/lib
vlcj: (AbstractNativeDiscoveryStrategy.java:85)      | DEBUG | Matched 'libvlc.dylib' in '/Applications/VLC.app/Contents/MacOS/lib'
vlcj: (AbstractNativeDiscoveryStrategy.java:85)      | DEBUG | Matched 'libvlccore.dylib' in '/Applications/VLC.app/Contents/MacOS/lib'
vlcj: (AbstractNativeDiscoveryStrategy.java:88)      | DEBUG | Matched all required files
vlcj: (AbstractNativeDiscoveryStrategy.java:63)      | DEBUG | result=/Applications/VLC.app/Contents/MacOS/lib
vlcj: (NativeDiscovery.java:112)                     | DEBUG | path=/Applications/VLC.app/Contents/MacOS/lib
vlcj: (NativeDiscovery.java:114)                     | INFO  | Discovery found libvlc at '/Applications/VLC.app/Contents/MacOS/lib'
vlcj: (Test.java:34)                                 | DEBUG | found=true
vlcj: (LibVlcFactory.java:164)                       | INFO  | vlc: 2.1.4 Rincewind, changeset 2.1.4-0-g2a072be
vlcj: (LibVlcFactory.java:165)                       | INFO  | libvlc: /Applications/VLC.app/Contents/MacOS/lib/libvlc.dylib
vlcj: (Test.java:36)                                 | DEBUG | Version: {}2.1.4 Rincewind
vlcj:(Info.java:70)| Info | vlcj:
vlcj:(Info.java:71)| Info | java:1.6.0|65苹果公司。
vlcj:(Info.java:72)| Info | javahome:/System/Library/java/JavaVirtualMachines/1.6.0.jdk/Contents/home
vlcj:(Info.java:73)| Info | os:macosx10.8.5x86_64
vlcj:(NativeDiscovery.java:98)|调试|发现()
vlcj:(NativeDiscovery.java:101)|调试| jnaLibraryPath=null
vlcj:(NativeDiscovery.java:106)|调试|发现策略=uk.co.caprica.vlcj.discovery.linux。DefaultLinuxNativeDiscoveryStrategy@42b1b4c3
vlcj:(NativeDiscovery.java:109)|调试|支持=false
vlcj:(NativeDiscovery.java:106)|调试|发现策略=uk.co.caprica.vlcj.discovery.windows。DefaultWindowsNativeDiscoveryStrategy@60072ffb
vlcj:(NativeDiscovery.java:109)|调试|支持=false
vlcj:(NativeDiscovery.java:106)|调试|发现策略=uk.co.caprica.vlcj.discovery.mac。DefaultMacNativeDiscoveryStrategy@77df38fd
vlcj:(NativeDiscovery.java:109)|调试|支持=true
vlcj:(AbstractNativeDiscoveryStrategy.java:49)|调试|发现()
vlcj:(AbstractNativeDiscoveryStrategy.java:54)| DEBUG | directoryNames=[/Users/iamparker/Documents/workspace/NativeDiscoveryTest,/usr/bin,/bin,/usr/sbin,/sbin,/Applications/VLC.app/Contents/MacOS/lib]
vlcj:(AbstractNativeDiscoveryStrategy.java:57)|调试|目录名=/Users/iamparker/Documents/workspace/NativeDiscoveryTest
vlcj:(AbstractNativeDiscoveryStrategy.java:95)|调试|未能匹配所有必需的文件
vlcj:(AbstractNativeDiscoveryStrategy.java:57)|调试|目录名=/usr/bin
vlcj:(AbstractNativeDiscoveryStrategy.java:95)|调试|未能匹配所有必需的文件
vlcj:(AbstractNativeDiscoveryStrategy.java:57)|调试|目录名=/bin
vlcj:(AbstractNativeDiscoveryStrategy.java:95)|调试|未能匹配所有必需的文件
vlcj:(AbstractNativeDiscoveryStrategy.java:57)|调试|目录名=/usr/sbin
vlcj:(AbstractNativeDiscoveryStrategy.java:95)|调试|未能匹配所有必需的文件
vlcj:(AbstractNativeDiscoveryStrategy.java:57)|调试|目录名=/sbin
vlcj:(AbstractNativeDiscoveryStrategy.java:95)|调试|未能匹配所有必需的文件
vlcj:(AbstractNativeDiscoveryStrategy.java:57)| DEBUG | directoryName=/Applications/VLC.app/Contents/MacOS/lib
vlcj:(AbstractNativeDiscoveryStrategy.java:85)|调试|匹配'/Applications/VLC.app/Contents/MacOS/lib'中的'libvlc.dylib'
vlcj:(AbstractNativeDiscoveryStrategy.java:85)|调试|匹配'/Applications/VLC.app/Contents/MacOS/lib'中的'libvlccore.dylib'
vlcj:(AbstractNativeDiscoveryStrategy.java:88)|调试|匹配所有必需的文件
vlcj:(AbstractNativeDiscoveryStrategy.java:63)|调试|结果=/Applications/VLC.app/Contents/MacOS/lib
vlcj:(NativeDiscovery.java:112)| DEBUG | path=/Applications/VLC.app/Contents/MacOS/lib
vlcj:(NativeDiscovery.java:114)|信息|发现libvlc位于“/Applications/VLC.app/Contents/MacOS/lib”
vlcj:(Test.java:34)| DEBUG | found=true
vlcj:(LibVlcFactory.java:164)|信息| vlc:2.1.4 Rincewind,变更集2.1.4-0-g2a072be
vlcj:(LibVlcFactory.java:165)| INFO | libvlc:/Applications/VLC.app/Contents/MacOS/lib/libvlc.dylib
vlcj:(Test.java:36)|调试|版本:{}2.1.4

原来这只是我一个愚蠢的错误。我给出的路径是
“/Applications/VLC/Contents/MacOS/lib”
,它应该是
“/Applications/VLC.app/Contents/MacOS/lib”
。我忘了VLC有一个.app扩展。我现在就去把脑袋埋在沙子里

cd src/main/resources/
cp -r /Applications/VLC.app/Contents/MacOS/lib darwin
rm darwin/*.*.*
cd darwin
install_name_tool -add_rpath @loader_path libvlc.dylib
mkdir vlc
cp -r /Applications/VLC.app/Contents/MacOS/plugins vlc/plugins
这是macOS版本。它对我有用。也许能帮你

├── kotlin
│   └── App.kt
└── resources
    └── darwin
        ├── libvlc.dylib
        ├── libvlccore.dylib
        └── vlc
            └── plugins
                ├── liba52_plugin.dylib
                ├── libaccess_concat_plugin.dylib
                ├── libaccess_imem_plugin.dylib
                ├── libaccess_mms_plugin.dylib

我将vlcj maven依赖项更新为:

    <dependency>
        <groupId>uk.co.caprica</groupId>
        <artifactId>vlcj</artifactId>
        <version>3.12.1</version>
    </dependency>

英国卡布里卡公司
vlcj
3.12.1

它是有效的

您知道在该路径中有两组不同的JNA jar文件吗?您应该删除其中一个。不管怎样,哪个JDK,哪个VLC版本?最常见的问题是混合使用32位和64位。您还应该尝试运行vlcj“NativeDiscoveryTest”。我刚刚在OSX 10.9.2上试用过,效果很好。我也注意到了。我已经将4.1.0 JNA文件添加到了构建路径a中