[英]jpcap installation error
我運行程序時安裝了jpcap庫我遇到了這個錯誤。 我確定將jpcap.jar
和jpcap.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.