2014-04-14 7 views
4

내가 일하고있는 응용 프로그램의 일부로 일부 스트리밍을 수행하기 위해 VLCJ를 초기화하려고합니다. official tutorial으로 가고, 나는 시도하고 라이브러리를로드하려면 다음 코드를 사용하고 있습니다 :Mac OSX에서 VLCJ 불만족 링크 오류 (darwin/libvlc.dylib)

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) 

같습니다 내가 준 경로를 검색해. 그 디렉토리 안에는 아주 좋은 libvlc.dylib가있다.

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.c[email protected]42b1b4c3 
vlcj: (NativeDiscovery.java:109)      | DEBUG | supported=false 
vlcj: (NativeDiscovery.java:106)      | DEBUG | discoveryStrategy=uk.co.capri[email protected]60072ffb 
vlcj: (NativeDiscovery.java:109)      | DEBUG | supported=false 
vlcj: (NativeDiscovery.java:106)      | DEBUG | discoveryStrategy=uk.[email protected]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 
+0

그 경로에 두 개의 다른 JNA jar 파일 세트가 있다는 것을 알고 계십니까? 그 중 하나를 제거해야합니다. 어쨌든, 어떤 JDK, 어떤 VLC 버전? 가장 일반적인 문제는 32 비트와 64 비트를 혼합하는 것입니다. 또한 vlcj "NativeDiscoveryTest"를 실행 해보십시오. 난 그냥 OSX 10.9.2에서 그것을 시도하고 그것은 나를 위해 잘 작동했습니다. – caprica

+0

나는 그것을 또한 알아 차렸다. 4.1.0 JNA 파일을 빌드 경로에 추가 한 다음 이전 경로 파일을 제거했습니다. 그러나 어떤 이유로 Eclipse를 다시 시작할 때까지 오류 메시지에 여전히 나타나고있었습니다. 업데이트 된 오류 메시지 (본질적으로 동일한, 이전 .jars 제외)로 내 게시물을 편집했습니다. –

+0

그리고 내 다른 제안/질문은 어떻습니까? – caprica

답변

1

는 그냥 내 부분에 바보 같은 실수 밝혀 : 여기

는 VLCJ NativeDiscoveryTest를 실행 한 출력됩니다. 내가 준 경로는 "/Applications/VLC/Contents/MacOS/lib"이고, 이는 "/Applications/VLC.app/Contents/MacOS/lib"이어야합니다. 나는 VLC에 .app 확장자가 있다는 것을 잊었다. 나는 모래에 머리를 묻어 버릴거야.