使用供应商SDK二次开发,使用的是eclipse,直接打开了供应商提供的demo项目,Windows平台使用JNI调用dll,调用方法如下,dll文件和jar全部放到了项目lib文件夹下
//调用一个dll
System.loadLibrary("xxx");
运行时报 Exception in thread “main” java.lang.UnsatisfiedLinkError: no xxx in java.library.path
实际这个dll是存在的,搜索资料知道System.loadLibrary实际是在java.library.path目录下查找dll,默认情况下java.library.path目录就是系统环境变量中的path
//查看当前项目运行时java.library.path路径到底是哪
System.out.println("java.library.path:" + System.getProperty("java.library.path"));
运行发现项目的java.library.path被指定了,在项目的 .classpath 文件中
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
<attributes>
<---- 下面的value就是项目运行时指定的 java.library.path,可修改为自己的dll路径--->
<--- 若删掉, java.library.path即指向path环境变量路径--->
<attribute name="org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY" value="xxxxxx"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="lib/ModuleAPI_J.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
修改后运行ok