2013-04-16 281 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。