通过JNA动态加载.dll文件
错误现象
eclipse启动项目的时候提示下列错误消息,并销毁了容器
java.lang.UnsatisfiedLinkError: Unable to load library 'ping64r.dll': 找不到指定的模块
eclipse中调用.dll文件的代码
如下图所示,通过jna中的方法来加载.dll文件
package net.common.util;
import com.sun.jna.Library;
import com.sun.jna.Native;
public interface PingDLL extends Library {
//TextSizeDLL instanceDll= (TextSizeDLL)Native.loadLibrary("TextSize",TextSizeDLL.class);
//TextSize.dll 文件在dll文件包中
PingDLL instanceDll= (PingDLL)Native.loadLibrary("ping64r.dll",PingDLL.class);
public int ping_init();
public int ping_uninit();
public int ping_ip(String strIp);
//参数 strip:ip-ip-ip state:int数组,长度最少是ip的个数
//返回 到state
public boolean ping_querystate(String strip, int[] state);
}
处理方法
因为在eclipse中启动和直接启动tomcat是不同的,所以下面针对两种环境分别说明
eclipse中的处理方法
1.查看dll文件的JDK位数是32位还是64位,需要与项目的JDK版本保持一致
2.dll文件默认其实是放在java.libarary.path下面,所以可以将需要的dll文件发到
C:\Program Files\Java\jdk1.8.0_191\jre\bin路径下,每个人的eclipse中配置的路径不一样,具体可以通过一下方法查看:
首先选择项目右击,选择build path,选择右侧的Libraries,找到 JRE System library并选中,然后点击旁边的Edit按钮,进入编辑页面,选中本地的JDK路径,然后将对应的dll文件放到JDK/JRE/Bin中,图解如下