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呀?

解决方案 »

  1.   


    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下
      

  2.   

    给篇博文:
    http://blog.csdn.net/zhangao0086/archive/2011/05/02/6384795.aspx
      

  3.   

    Java中加载dll文件的方法有两种: 
    ①、System.load(String filename); 
        从作为动态库的本地文件系统中以指定的文件名加载代码文件。文件名参数必须是完整的路径名(指的是绝对路径)。dll文件可以随便放到哪个目录下面,指定了绝对路径找到文件就OK了。filename指的就是加载的文件。 
       
    ②、System.loadLibrary(String libname); 
       
        加载由 libname 参数指定的系统库。将库名映射到实际系统库的方法取决于系统,libname指的指定的动态库的库名。 
         用这个方法我是直接把dll文件放到System32下面的,自动去加载的。 
      

  4.   

    我放到system32 里面,如果在src下可以,但是放到包里就不行了。
      

  5.   


    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下好使,但是放到包里就不行了?为什么?
      

  6.   

    不是吧,你用当前的目录相对路径呢??src下面的包里面。。