当我运行我的程序时,我安装了jpcap库,我得到了这个错误。我确信添加jpcap.jar和jpcap.dll到正确的目录,但我不知道是什么问题!有人知道错误是什么吗?
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)发布于 2013-04-16 22:00:31
当您使用System.loadLibrary()加载本地库时,它会在PATH环境变量和java.libarary.path系统属性中查找那些共享库,如果找不到共享库,它就会抛出"Exception in thread "main" java.lang.UnsatisfiedLinkError: no in java.library.path"。现在的诀窍是,在Windows中,它从System32文件夹中拾取动态链接库,而大多数时候,System32存在于path中,所以我们通常不会遇到这个问题。无论如何,如果您反复得到这个错误,那么您可以尝试执行以下步骤,这可能有助于您在java应用程序中解析java.lang.UnsatisfiedLinkError。
尝试执行以下步骤:
1)检查您的路径是否包含Java,是否包含所需的dll。
2)如果您已将java.library.path设置为所需的dll,请验证您的dll。
3)使用以下命令运行java应用程序:java -Djava.library.path= "your dll path"
4)尝试为库指定基本名称,并使用System.loadLibaray(“名称”)加载库,其中名称没有dll。
5) Linux从LD_LIBRARY_PATH加载动态链接库(.so),因此您可能希望将共享库目录包含在LD_LIBRARY_PATH中,例如
6)通过提供像"C:/WINNT/system32/digest.dll"一样的绝对路径来加载库
export LD_LIBRARY_PATH=/shared library (.so)要点是JVM应该找到你的动态链接库,并提供明确的路径与-Djava.library.path总是帮助我。
在使用系统依赖库时,还有一些值得注意的地方:
1)它们使java代码依赖于平台。
2) System.loadLibrary()等同于Runtime.getRuntime.loadLibary()。
3)在静态初始化程序块中加载System.loadLibary(库),以便只有在加载包含类时才加载它,并避免重新加载它。
另一个值得注意的地方是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,请分享你的经验。
引用的here
发布于 2015-01-03 20:18:48
您可能在32位wincap上运行64位jpcap。请重新安装wincap,并确保jpcap和wincap都具有与jdk相同的‘bit’。
https://stackoverflow.com/questions/16038703
复制相似问题