2013-04-16 329 views
3

我安裝jpcap庫時,我運行我的程序我得到這個錯誤。我確信添加jpcap.jarjpcap.dll來更正目錄,但我不知道是什麼問題! 任何人都知道什麼是erorr?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

當加載喜歡。所以在Linux或.dll文件在Windows上使用System.loadLibrary()它會在兩個PATH環境變量和java.libarary.path系統屬性的共享庫機庫,如果沒有找到共享庫它拋出"Exception in thread "main" java.lang.UnsatisfiedLinkError: no in java.library.path"。現在的訣竅是,在Windows中,它會從DLL中獲取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)其中名稱是不帶DLL

5)的Linux負載庫和裝載庫指定基本名稱。從LD_LIBRARY_PATH所以你可能希望你的共享庫目錄動態鏈接庫(的.so)包含在LD_LIBRARY_PATH例如,通過提供像"C:/WINNT/system32/digest.dll"

絕對路徑

6)加載庫

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),這樣它只在包含class的時候被加載,並且避免重載它。

另一個值得注意的是實際的錯誤消息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之前。

Refered here

0

也許你在運行32位WINCAP 64位JPCAP .. 請重新安裝WINCAP,確保JPCAP和WINCAP都具有相同的「位」與JDK。