2017-12-26 35 views
0

Netbeans에서 opencv 라이브러리로 제대로 작동하는 프로젝트가 있습니다.내 .jar 파일에 라이브러리를 추가하는 방법

내가 프로젝트 속성 -> 실행에서 설정 한 : -Djava.library.path="C:\opencv\build\java\x64"

나는 그것이 작동 넷빈즈에 프로젝트를 실행합니다. 나는 JAR 파일을 작성하고 cmd를에서 java -Djava.library.path="C:\opencv\build\java\x64" -jar myjar.jar하려고 할 때

그러나, 그것은

내 항아리를 구축 실종 무엇

java.lang.NoClassDefFoundError: org/opencv/core/Mat

을 던져?

편집의 .jar가 구축 된 디렉토리에서

, 나는 디렉토리가 lib라고 내가 OpenCV의-300.jar를 넣어 내부에 생성 : 나는 java -cp "lib/opencv-330.jar;myjar.jar" gui.Client을 실행하면 작동 ... 인가가 어떤 명령을 실행하지 않고 앱을 실행하는 방법은 무엇입니까? 전체 경로를 제공함으로써

1) 파일을로드 :

+0

실행 가능한 jar를 만들어야합니다. – tsolakp

+0

"실행 가능한"jar는 무엇을 의미합니까? 이미 내 .jar 파일이 있습니다. –

+0

https://en.wikipedia.org/wiki/JAR_(file_format)#Executable_JAR_files – tsolakp

답변

0

두 가지 방법으로 기본 라이브러리 파일 (.DLL/Windows 또는 .so를/리눅스를)로드 할 수

System.load("my/full/path/opencv.dll"); 

2) 두 번째 경우에 만 (확장자없이) 원시 파일의 이름을 제공 할 필요가

System.loadLibrary("opencv"); 

를 적어주의 사항 : 기본 파일은 자바 라이브러리 경로 내부에있는 경우.

기본 자바 라이브러리 경로

은 OS에 따라 달라집니다 : Linux에서 , 그것은 매핑
은 OS X에
를 LD_LIBRARY_PATH에

Windows에서

,이 PATH에 매핑,이 경우

을 DYLD_LIBRARY_PATH에 매핑 자신 만의 Java 라이브러리 경로를 설정하려고합니다 :

try { 
     System.setProperty("java.library.path","YOUR/PATH"); 
     Field fieldSysPath = ClassLoader.class.getDeclaredField("sys_paths"); 
     fieldSysPath.setAccessible(true); 
     fieldSysPath.set(null, null); 
    } catch (Exception ex) { 
     System.out.println("Failed to set Java Library Path: " + ex.getMessage); 
    } 
+0

필자는 DLL을 올바르게로드하고 있다고 생각합니다. 그러나 opencv-300.jar가 링크되지 않았을 때 문제가 발생합니다. - Java에서 opencv를 사용하기 위해서는 opencv.dll과 opencv.jar를 사용해야합니다. –

+0

Gradle을 사용하고 있습니까? –

+0

아니요, 그냥 일반적인 데스크탑 스윙 응용 프로그램입니다 –