2011-02-05 7 views
0

가 여기 내 시스템 정보입니다 :넷빈즈 : 라이브러리 후 빌드를 찾을 수 없습니다

IDE : 넷빈즈 6.9 OS : 우분투 10.10

나는 자바와 v4l4j (HTTP를 사용하여 프로그램 쓰고 있어요 : // 코드를. google.com/p/v4l4j/). 웹캠에서 프레임을 캡처하여 특정 방식으로 처리합니다. 프로그램이 시작되면 캡처 장치를 묻는 대화 상자가 나타납니다. 장치가 선택되면 뷰어가 시작됩니다. 이 시점에서 webcam 클래스가 사용됩니다.

netbean의 실행 기능으로 프로그램을 실행할 때마다 모든 것이 좋습니다. 그것은 100 % 작동합니다. 그러나 jar 파일과 배포 할 다른 폴더로 실행하는 데 필요한 모든 파일을 복사하면 단순히 작동하지 않습니다. 즉시 선택 GUI가 완료되고 뷰어가 출시 될 때 프로그램이 오류와 충돌합니다 : 넷빈즈의 측면을 실행할 때

Cant load v4l4j JNI library 
Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: no v4l4j in java.library.path 
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1734) 
at java.lang.Runtime.loadLibrary0(Runtime.java:823) 
at java.lang.System.loadLibrary(System.java:1028) 
at au.edu.jcu.v4l4j.VideoDevice.<clinit>(Unknown Source) 
at programName.webcam.initVideoDevice(webcam.java:49) 
at programName.webcam.<init>(webcam.java:32) 
at programName.Main.initCamera(Main.java:164) 
at programName.Main.initCamera(Main.java:184) 
at programName.Main.<init>(Main.java:82) 
at programName.openingWindow$checker.actionPerformed(openingWindow.java:126) 
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) 
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) 
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) 
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) 
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) 
at java.awt.Component.processMouseEvent(Component.java:6267) 
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) 
at java.awt.Component.processEvent(Component.java:6032) 
at java.awt.Container.processEvent(Container.java:2041) 
at java.awt.Component.dispatchEventImpl(Component.java:4630) 
at java.awt.Container.dispatchEventImpl(Container.java:2099) 
at java.awt.Component.dispatchEvent(Component.java:4460) 
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577) 
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238) 
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168) 
at java.awt.Container.dispatchEventImpl(Container.java:2085) 
at java.awt.Window.dispatchEventImpl(Window.java:2478) 
at java.awt.Component.dispatchEvent(Component.java:4460) 
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) 
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) 
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) 
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) 
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) 

다시 말하지만,이 발생합니다. jar 파일과 같은 디렉토리에 lib 폴더를 복사했습니다. 넷빈즈의 DIST 폴더에

directory root/ 
    program.jar 
    data/ 
     images/ 
     settings/ 
    lib/ 
     v4l4j.jar 

모든 파일이 복사 된 나는 이미지 및 설정 파일 등 필요한 모든 리소스 파일을 가지고 : 여기에 내가 무엇을 기본적으로합니다. 웬일인지, 최근까지 내가이 오류가 발생하기 시작할 때까지 완벽하게 작동했습니다.

또한 오류가 참조하는 기능은 다음과 같습니다. 클래스가 누락 된 라이브러리를 사용하는 첫 번째 단계입니다. 다음과 같이

private void initVideoDevice() throws Exception { 
    vd = new VideoDevice(path); 
    fg = vd.getJPEGFrameGrabber((int)resolution.getWidth(), (int)resolution.getHeight(), 0, standard, quality); 
} 

답변

1

같이 v4l4j의 JNI 공유 라이브러리 (libv4l4j.so) 찾을 수 없기 때문에, 이런. 시도한 것처럼 libv4l4j.so가 아닌 v4l4j.jar에 대한 전체 경로를 사용해야한다는 점을 제외하고는 -D 인수를 사용하여이 라이브러리 (및 해당 종속성)를 찾을 위치를 JVM에 알려야합니다. v4l4j를 설치 했습니까? 그렇다면 libv4l4j는/usr/lib/jni에 있어야합니다.

+0

아, 알겠습니다. 나는 최근에 소프트웨어를 상당히 바꿨으며 현재 버전에서는 문제가 존재하지 않는 것처럼 보입니다. 내가 다시 만난다면 나는이 조언을 따라야 할 것입니다. 감사. –

+0

이 답변이 늦었지만 오류가 다시 발생했습니다. 우분투의 파일 관리자가 두 번 클릭 할 때 이미이 인수를 삽입 할만큼 똑똑하다는 것을 알았습니다. 쉘 스크립트를 통해 jar 파일을 호출하는 대신 최신 버전의 소프트웨어를 실행하려고했습니다. 다음은 실행 명령입니다. java -jar -Djava.library.path =/usr/lib/jni myjarfile.jar. 도움을 주신 TON에게 감사드립니다. –

1

봅니다 프로그램을 실행합니다 : BuHHu - NYX 지적

java -Djava.library.path=/absolute/path/to/lib/folder/containing/your/library -jar program.jar 
+0

아쉽게도 작동하지 않았습니다. 같은 오류. 이것은 내가 실행 한 것입니다 : java -Djava.library.path = "/ home/myAccountName/Documents/Work/projectName/Installation Root/.files/lib/v4l4j.jar"-jar program.jar. lib 폴더에 대한 경로와 동일한 명령을 시도했음을 유의하십시오. 아직도 운이 없다. cd 명령을 사용하여 파일 경로가 유효한지 확인했습니다. –