public class Sys {
public static native String showHDSerial(); static {
String path = "";
File f = new File("lib/native");
try {
path = f.getAbsolutePath();
System.out.println(path);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.setProperty("java.library.path", path);//
System.loadLibrary("Sys");
} public static void main(String[] args) {
String a = showHDSerial(); System.out.println("mac:" + a); }
}这样也是取不到dll,请问是如如何加载dll呀?
import com.sun.jna.Library;
import com.sun.jna.Native;public interface HardInfo2Lib extends Library { public static final String DllFilename="PcHardInfo.dll";
public static final String DllFile_Md5="CC17B758569CA565738540F9197E6135";
HardInfo2Lib INSTANCE = (HardInfo2Lib) Native.loadLibrary("PcHardInfo",HardInfo2Lib.class);
String GetMachineUUID();
String GetCPUID();
String GetPriHddSerialNumber();
}此处dll放在Tomcat下
http://blog.csdn.net/zhangao0086/archive/2011/05/02/6384795.aspx
①、System.load(String filename);
从作为动态库的本地文件系统中以指定的文件名加载代码文件。文件名参数必须是完整的路径名(指的是绝对路径)。dll文件可以随便放到哪个目录下面,指定了绝对路径找到文件就OK了。filename指的就是加载的文件。
②、System.loadLibrary(String libname);
加载由 libname 参数指定的系统库。将库名映射到实际系统库的方法取决于系统,libname指的指定的动态库的库名。
用这个方法我是直接把dll文件放到System32下面的,自动去加载的。
public class Sys {
public static native String showHDSerial(); static { try {
System.load("E:/jsp/quality/WebRoot/WEB-INF/classes/net/hlj/util/Sys.dll"); // 注意 } catch (Exception e) {
e.printStackTrace();
}
} public static void main(String[] args) {
String a = showHDSerial(); System.out.println("mac:" + a); }
}这个文件放到src下好使,但是放到包里就不行了?为什么?