簡體   English   中英

jpcap安裝錯誤

[英]jpcap installation error

我運行程序時安裝了jpcap庫我遇到了這個錯誤。 我確定將jpcap.jarjpcap.dll添加到正確的目錄但我不知道是什么問題! 有誰知道什么是erorr?

 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)

當您使用System.loadLibrary()在Windows上加載.so或Linux上的.dll等本機庫時,它會在PATH環境變量和java.libarary.path系統屬性中查找這些共享庫,如果它找不到共享庫的話拋出"Exception in thread "main" java.lang.UnsatisfiedLinkError: no in java.library.path" 現在的訣竅是,在Windows中,它從System32文件夾中獲取dll,並且大部分時間System32都在路徑中退出,所以我們通常不會出現這個問題。 無論如何,如果你反復得到這個錯誤,你可以嘗試下面的步驟,這可以幫助你解決java應用程序中的java.lang.UnsatisfiedLinkError。

請嘗試以下步驟:

1)檢查您的PATH for Java,它是否包含所需的dll。

2)驗證你的java.library.path,以防你為所需的dll設置它。

3)使用以下命令運行java應用程序: java -Djava.library.path= "your dll path"

4)嘗試使用System.loadLibaray (“name)指定庫的基本名稱和加載庫,其中name不帶dll。

5)Linux從LD_LIBRARY_PATH加載動態鏈接庫(.so),因此您可能希望將您的共享庫目錄包含在LD_LIBRARY_PATH中,例如

6)通過提供像"C:/WINNT/system32/digest.dll"這樣的絕對路徑來加載庫

export LD_LIBRARY_PATH=/shared library (.so)

要點是JVM應該找到你的dll並提供-D java.library.path顯式路徑總是幫助我。

使用系統相關庫時需要注意的其他一些要點:

1)他們使java代碼平台依賴。

2) System.loadLibrary()等同於Runtime.getRuntime.loadLibary()

3)在靜態initalizer塊中加載System.loadLibary(libary),以便它只在包含類被加載時加載並避免重新加載它。

另一個值得注意的是java.lang.UnsatisfiedLinkError引發的實際錯誤消息:

如果它顯示"Exception in thread "main" java.lang.UnsatisfiedLinkError: no dll in java.library.path"意味着JVM無法定位和加載庫。

如果它顯示線程"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)

解決這個問題只是提供庫的絕對路徑,你會沒事的。

這就是如何修復Exception in thread "main" java.lang.UnsatisfiedLinkError: no dll in java.library.path" ,如果您之前遇到過這個java.lang.UnsatisfiedLinkError,請分享您的經驗。

這里提到

可能你在32位wincap上運行64位jpcap ..請重新安裝wincap並確保jpcap和wincap都與jdk具有相同的“位”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM