首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jpcap安装错误

jpcap安装错误
EN

Stack Overflow用户
提问于 2013-04-16 21:41:30
回答 2查看 5.3K关注 0票数 3

当我运行我的程序时,我安装了jpcap库,我得到了这个错误。我确信添加jpcap.jarjpcap.dll到正确的目录,但我不知道是什么问题!有人知道错误是什么吗?

代码语言:javascript
复制
 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)
EN

回答 2

Stack Overflow用户

发布于 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"一样的绝对路径来加载库

代码语言:javascript
复制
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。

有时你可能还会得到

代码语言:javascript
复制
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

票数 2
EN

Stack Overflow用户

发布于 2015-01-03 20:18:48

您可能在32位wincap上运行64位jpcap。请重新安装wincap,并确保jpcap和wincap都具有与jdk相同的‘bit’。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16038703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档