java确实不能直接获得硬件信息。我以前都用js获取

解决方案 »

  1.   

    有开源jni库的。标准硬件设备信息一般都能得到。
    将dll 文件放在java.library.path路径里边。才能找到
      

  2.   

    js怎么取?是用微软的wmi吗?那也能取到系统为linux的服务器吗?
    如果不是wmi,怎么取?-请指点一下。。谢谢
      

  3.   

    如果不通过jni可以取到mac的地址,但是如何取到硬盘序列号的呢??各位难道就一个都没有知道解决方法的吗??--还是这个问题太难了?--不通过jni的话
      

  4.   

    .....顶啊....现在公司要我搞这个...我晕死,一点头绪都没...哪位高手帮忙指点下啊!!!有什么能用的忙发到邮箱...谢谢了啊...
    [email protected]
      

  5.   

    像LZ说的,就是比较典型的一个办法,JNI+DLL
      

  6.   

    Java程序如果需要获取系统的硬件信息,如CPU、硬盘序列号,网卡MAC地址等,一般需要使用JNI程序调用,不过还有另外一种方法也可以实现这个功能,并且不需要JNI调用,原理是根据操作系统调用系统命令command,再根据命令行返回的信息分析获取硬件信息,这个方法需要程序判断操作系统类型来进行相应的调用,可以调用任何操作系统提供的命令,下面是Windows下面获取网卡MAC地址的例子:public void testGetSysInfo() {
       String address = "";
       String os = System.getProperty("os.name");
       if (os != null && os.startsWith("Windows")) {
        try {
         String command = "cmd.exe /c ipconfig /all";
         Process p = Runtime.getRuntime().exec(command);
         BufferedReader br = new BufferedReader(new InputStreamReader(p
           .getInputStream()));
         String line;
         while ((line = br.readLine()) != null) {
          if (line.indexOf("Physical Address") > 0) {
           int index = line.indexOf(":");
           index += 2;
           address = line.substring(index);
           break;
          }
         }
         br.close();
         logger.info("mac address:" + address.trim());
        } catch (IOException e) {
         logger.info("Error:" + e);
        }
       }
    }