基本目前没有纯Java的API来访问硬件信息,以后或许会有吧,谁知道
对Mac地址的需求部分来自UUID, 另有很大部分来自License Management,这真是一件无聊的事情,希望以后软件卖的都是服务,不是拷贝,省却这些麻烦
搜了一下,大体有三类解决分案
1, JDK6, JDK7 ?
详情可参见以下链接 http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4691932
2, Shell Command
就是截取 ipconfig, ifconfig 等命令的输出,然后解析
有一些开源项目,如 http://sourceforge.net/projects/javanetcomm/
还有很多代码片断,如 http://forum.java.sun.com/thread.jspa?threadID=61556, http://forum.java.sun.com/thread.jspa?threadID=245711
这种方法的缺点是有可能需要较高的系统权限才能执行这些命令或者访问网卡硬件
3, JNI
也有开源项目包含了这个功能, 如 http://jug.safehaus.org/
缺点是不方便部署
然而不是所有的网络都是Ethernet, 对License Management来说Mac地址只是更为generic的概念"Host Id"的一种考量因素.