2013-04-16 1 views
3

내 프로그램을 실행할 때 jpcap 라이브러리를 설치했습니다.이 오류가 발생했습니다. 나는 jpcap.jarjpcap.dll을 정확한 디렉토리에 추가한다고 확신하지만, 나는 무엇이 문제인지 모른다. 누구나 에로르가 무엇인지 압니까?jpcap 설치 오류

Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: C:\Program Files (x86)\Java\jre7\bin\jpcap.dll: Can't find dependent libraries 
    at java.lang.ClassLoader$NativeLibrary.load(Native Method) 
    at java.lang.ClassLoader.loadLibrary1(Unknown Source) 
    at java.lang.ClassLoader.loadLibrary0(Unknown Source) 
    at java.lang.ClassLoader.loadLibrary(Unknown Source) 
    at java.lang.Runtime.loadLibrary0(Unknown Source) 
    at java.lang.System.loadLibrary(Unknown Source) 
    at jpcap.JpcapCaptor.<clinit>(JpcapCaptor.java:251) 
    at EWMAStableIP.getNumOfNewIPs(EWMAStableIP.java:106) 
    at EWMAStableIP.initial(EWMAStableIP.java:343) 
    at Frame.initialize(Frame.java:78) 
    at Frame.<init>(Frame.java:52) 
    at Frame$1.run(Frame.java:39) 
    at java.awt.event.InvocationEvent.dispatch(Unknown Source) 
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source) 
    at java.awt.EventQueue.access$200(Unknown Source) 
    at java.awt.EventQueue$3.run(Unknown Source) 
    at java.awt.EventQueue$3.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) 
    at java.awt.EventQueue.dispatchEvent(Unknown Source) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
    at java.awt.EventDispatchThread.run(Unknown Source) 

답변

2

당신이 리눅스 또는 .dll이 모두 PATH 환경 변수와 java.libarary.path 시스템 속성 그 공유 라이브러리를 찾습니다 System.loadLibrary()를 사용하여 Windows에 .so를 같은 네이티브 라이브러리를로드 할 때, 경우에 그것을 발견하지 않습니다 공유 라이브러리는 "Exception in thread "main" java.lang.UnsatisfiedLinkError: no in java.library.path"을 던집니다. 지금 트릭은 Windows에서이 DLL 형태 System32 폴더를 집어 들고 SYSTEM32 경로에 종료 대부분의 시간은 우리가 일반적으로이 문제와 오지 않는 것입니다. 당신이 당신의 자바 응용 프로그램에서 java.lang.UnsatisfiedLinkError를 해결하는 데 도움이 될 수 있습니다 다음 단계를 시도 할 수있는 것보다 어쨌든 당신이 반복적으로 오류가 발생하는 경우. 다음 단계에 따라

시도 :

1)이 DLL을 필요 여부를 포함 여부, 자바에 대한 귀하의 경로를 확인합니다.

2) 필요한 dll을 설정 한 경우 java.library.path를 확인하십시오.

3) 명령을 사용하여 자바 응용 프로그램을 실행합니다. System.loadLibaray ("이름) 이름은 DLL없이

5) 리눅스로드를 사용하여 라이브러리 로딩 라이브러리에 대한 기본 이름을 지정하십시오) java -Djava.library.path= "your dll path"

(4) 당신이 당신의 공유 라이브러리 디렉토리가 할 수 있도록 LD_LIBRARY_PATH에서 동적 링크 라이브러리 (.so를가)

6)로드 라이브러리 "C:/WINNT/system32/digest.dll"

같은 절대 경로를 제공하여 LD_LIBRARY_PATH의 예에 포함
export LD_LIBRARY_PATH=/shared library (.so) 

홈페이지 포인트는 JVM이 DLL을 항상 도와 -D java.library.path에 명시 적으로 경로를 제공을 발견해야합니다.

1) 그들은 자바 코드의 플랫폼에 의존합니다 시스템 종속 라이브러리와 함께 작업하는 동안 지적

몇 가지 다른 점을 가치.

2) Runtime.getRuntime.loadLibary()System.loadLibrary()는 동일하다.

3) 정적 인니 타이 저 블록에서 System.loadLibary (libary)를로드하여 클래스를 포함 할 때만로드되고 은로드되지 않도록합니다. 이 "Exception in thread "main" java.lang.UnsatisfiedLinkError: no dll in java.library.path"는 JVM이 찾아로드 라이브러리 할 수없는 의미이다 경우

:

또 다른 가치가 주목할 점에서 java.lang.UnsatisfiedLinkError가 발생합니다 실제 오류 메시지입니다. 뭔가 것보다

가 보인다면 스레드 "main" java.lang.UnsatisfiedLinkError: com......' 즉 인쇄 클래스 나 메소드 이름은 절반 복사 DLL 같은 라이브러리 자체에 문제가 있습니다.

언젠가 당신은 또한

Exception in thread "main" java.lang.UnsatisfiedLinkError: Expecting an absolute path of the library: digest.dll 
     at java.lang.Runtime.load0(Runtime.java:767) 
     at java.lang.System.load(System.java:1003) 

이 그냥 라이브러리에 대한 절대 경로를 해결하기 위해 얻을 수 있으며, 당신은 잘 될 것입니다.

이전에이 java.lang.UnsatisfiedLinkError에 직면 한 경험이 있다면 Exception in thread "main" java.lang.UnsatisfiedLinkError: no dll in java.library.path"을 수정하는 방법에 관한 모든 것입니다.

대해 참조 here

0

는 아마 32 비트 wincap에 64 비트 jpcap를 실행 .. 는 wincap를 다시 설치하고 jpcap을 보장하고 wincap 모두 JDK와 같은 '비트'를 준비해주십시오.