2013-02-20 3 views
3

비디오 서버에서 RTSP를 통해 비디오를 스트리밍하기 위해이 Java 웹 애플릿을 디자인하고 있습니다. 이 비디오를 렌더링하려면 Xuggler 5.4 라이브러리 (xuggle-xuggler.jar)가 사용됩니다. 현재 비디오는 Windows XP 및 Ubuntu 10.04 컴퓨터에서 실행할 때 제대로 렌더링됩니다.Xuggle 라이브러리를로드 할 수 없습니다. java.lang.UnsatisfiedLinkError

10:10:13.370 [Thread-13] WARN com.xuggle.ferry.JNILibrary - Failure: library load of library: xuggle; url: C:\Users\Justin\AppData\Local\Temp\xuggle\xuggle8376027568348573783.dll; error: java.lang.UnsatisfiedLinkError: C:\Users\Justin\AppData\Local\Temp\xuggle\xuggle8376027568348573783.dll: Can't find dependent libraries 
10:10:13.448 [Thread-13] ERROR com.xuggle.ferry.JNILibraryLoader - Could not load library: xuggle; version: 5; Visit http://www.xuggle.com/xuggler/faq/ to find common solutions to this problem 
Exception in thread "Thread-13" java.lang.UnsatisfiedLinkError: no xuggle in java.library.path 
    at java.lang.ClassLoader.loadLibrary(Unknown Source) 
    at java.lang.Runtime.loadLibrary0(Unknown Source) 
    at java.lang.System.loadLibrary(Unknown Source) 
    at com.xuggle.ferry.JNILibraryLoader.loadLibrary0(JNILibraryLoader.java:268) 
    at com.xuggle.ferry.JNILibraryLoader.loadLibrary(JNILibraryLoader.java:171) 
    at com.xuggle.ferry.JNILibrary.load(JNILibrary.java:161) 
    at com.xuggle.ferry.FerryJNI.<clinit>(FerryJNI.java:16) 
    at com.xuggle.ferry.Ferry.<clinit>(Ferry.java:25) 
    at com.xuggle.xuggler.XugglerJNI.<clinit>(XugglerJNI.java:19) 
    at com.xuggle.xuggler.ICodec$ID.<clinit>(ICodec.java:760) 
    at com.ioindustries.videoserver.RtpSession.run(RtpSession.java:86) 
    at java.lang.Thread.run(Unknown Source) 

나는 심지어 윈도우 %의 PATH % 및에 연결 후, xuggle-5.dll을 추출하고 내 web 디렉토리에 배치 시도했다 : 나는 윈도우 7에서 실행하려고 할 때, 그러나, 나는 다음과 같은 오류가 발생합니다 Windows % CLASSPATH %이지만 오류가 발생하면 비디오가 렌더링되지 않습니다 (그 시점에서 나는 어떤 일이 일어나고 있는지 잘 모르겠습니다). 물론

enter image description here

같은 에러 : 나는 또한 아래의 스크린 샷과 같이 내가 할 모든 IESHIM.dll에 오류가 있지만, 종속성 워커를 통해 xuggle-5.dll을 실행하려고했습니다 IESHIM.dll은 Windows XP 및 Ubuntu 10.04 컴퓨터에서 실행할 때 발생합니다.

웹 애플릿을 실행하는 데 사용되는 HTML 문서에서 참조되는 xuggle-xuggler.jar 파일도 있습니다.

이 시점에서 필자는 Xuggler가 Windows 7 (32 비트) 컴퓨터에서 실행되는 데 실패했는지 확신 할 수 없습니다. 이 문제에 대한 도움은 크게 감사하겠습니다.

참고로 Xuggle 5.4의 GPL 버전 (이전 버전의 Xuggle과 달리 설치가 필요하지 않음)을 Xuggle 웹 사이트에서 사용할 수 있습니다. 여기

내 HTML 문서의 조각입니다 :

<div id="applet_box" class="applet box"> 
      <applet id="applet" code="com.videoserver.ClientApplet" 
        archive="VideoServerClient.jar, xuggle-xuggler-5.4.jar, slf4j-api-1.6.4.jar, logback-classic-1.0.0.jar, logback-core-1.0.0.jar" MAYSCRIPT> 
      </applet> 
     </div> 
+0

* "웹 애플릿을 실행하는 데 사용되는 HTML 문서에서 참조되는 xuggle-xuggler.jar 파일도 있습니다."* HTML을 표시하거나, 우리가 볼 수있는 곳에 링크를 표시하는 것이 좋습니다. –

+0

별도로. JNLP를 사용하는 애플릿에 대해 원어를 배포하는 것이 더 쉽습니다. –

+0

@Andrew Thompson : 자바 웹 애플릿을 퍼가기 위해 사용한 HTML 코드 스 니펫을 추가했습니다. – Justin

답변

1

내 동료가이 java.lang.UnsatisfiedLinkError가 발생했다 그래서 모든 신용 (나는 단지 관찰자이었다) 그에게가는 이유를 알아 냈어. 기본적으로

10:10:13.370 [Thread-13] WARN com.xuggle.ferry.JNILibrary - Failure: library load of library: xuggle; url: C:\Users\Justin\AppData\Local\Temp\xuggle\xuggle8376027568348573783.dll; error: java.lang.UnsatisfiedLinkError: C:\Users\Justin\AppData\Local\Temp\xuggle\xuggle8376027568348573783.dll: Can't find dependent libraries 

, 자바 런타임 환경은 가능성에서 온 Xuggle DLL 파일의 캐시 된 복사본을했다이었다 내 경우에는 무슨 일이 벌어지고 있는지 : 위의 오류 로그의 첫 번째 줄에

참조 두 달 전에 Java 애플릿 비디오 출력을 실험 해본 Xuggle JAR 아카이브입니다. 임시 디렉터리 (C:\Users\Justin\AppData\Local\Temp\xuggle\xuggle8376027568348573783.dll)에서 참조 된 DLL 파일이 종속성 워커 응용 프로그램을 통해 확인되면 최신 xuggle-xuggler-5.4.jar에서 추출 된 가장 최근의 xuggle DLL 파일과 비교하여 다른 종속성을 가졌다는 사실을 감안할 때이 결론에 도달했습니다 위.

결과적으로 Java Web Applet에서 비디오를 표시하려고 시도했을 때 Java Runtime Environment는 xuggle-xuggler-5.4.jar에서 DLL 파일을로드하는 대신이 오래된 Xuggle DLL 파일에 액세스하려고했습니다. 따라서 위의 java.lang.UnsatisfiedLinkError이 발생했습니다. xuggle-xuggler-5.4.jar 내에서 DLL 파일 내에서 DLL 파일을로드 JRE (Java Runtime Environment)를 강제하기 위해

는 다음과 같은 절차를 수행했다 :

  1. 자바 제어판을 엽니 다. Windows의 경우 시작 메뉴로 가서 제어판에 액세스하면됩니다. Java Runtime Environment가 설치된 경우 Windows 제어판에 Java가 옵션으로 표시됩니다. Java를 클릭하십시오.

  2. 일단 Java 제어판에있는 일반 탭의 임시 인터넷 파일에서 설정 ... 버튼을 클릭하십시오.

  3. "내 컴퓨터에 임시 파일 보관"확인란의 선택을 취소하십시오.

  4. 그런 다음 파일 삭제 버튼을 클릭하고 모든 임시 파일을 삭제합니다 (모든 확인란 선택). 선호도에 따라이 확인란을 모두 선택 했어도이 확인란의 하위 집합 만 선택할 수 있습니다.

  5. 확인을 클릭하십시오. 그런 다음 다시 확인을 클릭하십시오. 그런 다음 확인을 세 번 클릭하여 Java 제어판을 닫습니다.

  6. 웹 브라우저가 열려 있으면 닫고 Java Web Applet을 다시 실행하십시오. 이것이 문제인 경우, 코드가 정확하고 올바른 Xuggle JAR 및 Xuggle의 종속성이로드되어 있다고 가정하면 해당 java.lang.UnsatisfiedLinkError은 더 이상 나타나지 않아야하며 비디오는 올바르게 표시되어야합니다. 필자의 웹 애플릿 JAR은 필요한 모든 Xuggle JAR 및 Xuggle 종속성 JAR과 함께 웹 브라우저에 포함하는 데 사용되는 HTML 파일과 동일한 디렉토리에 배치되었습니다.

그것은 우분투에서 자바 런타임 환경은 또한 Windows에서 유사한 모양과 유사한 단계는 문제가 지금 발생하는 경우 우분투에서이 문제를 해결하기 위해 실행할 수있는 자바 제어판을 가지고 있음을 주목해야한다.

웹 브라우저에서 HTML 파일을 열기 만하면 위의 해결 방법이 작동합니다. 당신이 당신의 웹 애플릿을 배포하는 아파치 톰캣이나 글래스 피시를 사용하는 경우이 작동하지 않을 수 있습니다 -이 경우, 당신은이 솔루션을 참조 할 수 있습니다, 나는 그것을 철저하게 테스트하지 않은 있지만 자신을 :

http://wiki.xuggle.com/Frequently_Asked_Questions#I_get_an_.22UnsatisfiedLinkError.22_when_I_run_Xuggler-based_Applications_in_Tomcat

관련 문제