2013-04-29 3 views
2

일식에서 내보내는 동안 "생성 된 jar에 필요한 라이브러리를 패키지화"를 선택하십시오. jar 파일은 내 컴퓨터에서만 작동합니다. JavaCV를 사용하기 위해 시스템에exporting opencv를 사용하는 실행 jar 파일

Exception in thread "main" java.lang.UnsatisfiedLinkError: no jniopencv_core in java.library.path 
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1681) 
at java.lang.Runtime.loadLibrary0(Runtime.java:840) 
at java.lang.System.loadLibrary(System.java:1047) 
at com.googlecode.javacpp.Loader.loadLibrary(Loader.java:593) 
at com.googlecode.javacpp.Loader.load(Loader.java:489) 
at com.googlecode.javacpp.Loader.load(Loader.java:431) 
at com.googlecode.javacv.cpp.opencv_core.<clinit>(opencv_core.java:136) 
at mains.<clinit>(mains.java:25) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:266) 
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:56) 

답변

4

짧은 대답 (JavaCV requirements에서 언급 한 바와 같이)

당신은 OpenCV의를 설치해야하고 JavaCV : 그러나, 다른 컴퓨터에서 테스트 할 때이 예외를 제공합니다. 컴퓨터에서 개발을 위해 응용 프로그램을 설치 했으므로 응용 프로그램이 작동하지만 다른 컴퓨터에는 설치되지 않았으므로 jar은 작동하지 않습니다. 선 같이

긴 대답은

이 문제가 나타납니다 JavaCV 라이브러리, 제대로 jar에 포함되는 것은 아니다 : OpenCV의 위에 구축

at com.googlecode.javacpp.Loader.loadLibrary(Loader.java:593) 
at com.googlecode.javacpp.Loader.load(Loader.java:489) 
at com.googlecode.javacpp.Loader.load(Loader.java:431) 
at com.googlecode.javacv.cpp.opencv_core.<clinit>(opencv_core.java:136) 

사실은 JavaCV입니다 . OpenCV는 C++ 라이브러리이므로 Java에서 사용하는 유일한 방법은 JNI 호출을 사용하는 것입니다.

JNI는 두 가지 구성 요소가 필요합니다 (일반적으로 리눅스에 대한 확장 *.so 또는 창문 *.dll 포함)

  • 네이티브 라이브러리 네이티브 라이브러리 호출을 포함하는 자바 방법 (일반적으로 확장 *.jar와)

    • 자바 라이브러리를 그 이 경우 "작업 수행"

    첫 번째 것은 JavaCV에서 제공하고 jar 응용 프로그램에 포함되어 있습니다. 두 번째는 시스템 종속적이며 (Os, architecture, ...) Java 라이브러리 경로에 있어야합니다.

    이것은 실제 오류입니다. java.library.pathlibjniopencv_core.so을 찾을 수 없습니다. jniopencv_core 라이브러리는 JavaCV에서도 제공하지만 시스템 (예 : /usr/lib/)의 어딘가에 설치되므로 최종 jar에 포함되지 않습니다.

    최종 응용 프로그램에 포함시키는 방법을 찾더라도이 라이브러리는 시스템에 설치되어 있지 않은 OpenCV 라이브러리도 사용해야합니다. (JNI와 함께)를 호출 것,

    1. JavaCV 자바 라이브러리 : 요구 사항을 요약하면
    2. JavaCV 사용하는 네이티브 라이브러리 : 정말 할 것
    3. OpenCV의 라이브러리을, 그 일.

    이 중 하나가 없으면 응용 프로그램이 작동하지 않습니다. 따라서 OpenCV와 JavaCV가 시스템에 설치되어야합니다. 내 시스템에

  • +1

    , OpenCV가 설치되어 있습니다. 이클립스에서 프로젝트를 실행하려고하면 모든 것이 잘 동작한다. 그러나 runnabelJar에서 같은 것을하려고 할 때 그것은하지 않습니다. 문제점 : .dll 파일을 포함하지 않았으므로 어떻게해야합니까? –

    +0

    같은 문제가 있습니다.제발 도와주세요 – slaveCoder

    +0

    @ ABC http://stackoverflow.com/a/19202226/1847899 –