不开心,辛苦写的第一篇文章不小心删除了还恢复不了

想用java 获得本机地址,搜了下,觉得这个看起来不错,简洁

import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;public class app{public static void main(String[] args){InetAddress ip;try {ip = InetAddress.getLocalHost();System.out.println("Current IP address : " + ip.getHostAddress());NetworkInterface network = NetworkInterface.getByInetAddress(ip);byte[] mac = network.getHardwareAddress();System.out.print("Current MAC address : ");StringBuilder sb = new StringBuilder();for (int i = 0; i < mac.length; i++) {sb.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : ""));        }System.out.println(sb.toString());} catch (UnknownHostException e) {e.printStackTrace();} catch (SocketException e){e.printStackTrace();}}}

  好多都是这个版本,问题在于,一运行,报错了!!很无语,排查了很久也找不到原因,看getHardwareAddress API也没发现错误,很无奈。

mei@mei-X-Series:~/mei/test$ java Ipconfig
mei-X-Series/127.0.1.1
Exception in thread "main" java.lang.NullPointerExceptionat Ipconfig.getLocalMac(Ipconfig.java:24)at Ipconfig.main(Ipconfig.java:19)

  终于在http://rupertanderson.com/blog/soapui-google-analytics-null-pointer-exception-on-ubuntu/ 中找到难友,并获知了原因,that NetworkInterface.getByInetAddress cannot match the Machine Name to any of the Network Interface values.就是不匹配了。

  超出了自己的能力范围,看来智能用复杂的代码了,以下代码测试通过

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;public class getmac{
public static String getLinuxMACAddress() {String mac = null;BufferedReader bufferedReader = null;Process process = null;try {            process = Runtime.getRuntime().exec("ifconfig enp4s0");bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));String line = null;int index = -1;while ((line = bufferedReader.readLine()) != null) {index = line.toLowerCase().indexOf("硬件地址");if (index != -1) {mac = line.substring(index + 4).trim();break;}}} catch (IOException e) {e.printStackTrace();} finally {try {if (bufferedReader != null) {bufferedReader.close();}} catch (IOException e1) {e1.printStackTrace();}bufferedReader = null;process = null;}return mac;}
public static void main(String[] argc) {String mac = getLinuxMACAddress();System.out.println("本地是Linux系统, MAC地址是:" + mac);}
}

  运行结果如下:

本地是Linux系统, MAC地址是:54:ab:3a:05:34:e6

  通过最近几周的经历发现,网上的东西都是仅供参考,因为环境的不同、版本的不同会造成很大的差异,而且很多人都只是转载,从未验证,告诫自己无论任何东西,一定要切身验证,

  也要养成写博客的习惯,把自己的过程记录记载下来,供别人和自己以后参考。

转载于:https://www.cnblogs.com/KnowledgeShare/p/6184383.html

使用java获取本机mac相关推荐

  1. java获取本机mac物理地址

    package com.simonjia.util.other; import java.net.InetAddress;import java.net.InterfaceAddress;import ...

  2. java 获取本机mac地址并转为字符串

    2019独角兽企业重金招聘Python工程师标准>>> public  String getMacAddress() throws Exception{         InetAd ...

  3. Java获取本机的ip地址和Mac地址

    Java获取本机的ip地址 //得到IP,InetAddress ia = InetAddress.getLocalHost();String ip=ia.toString().split(" ...

  4. java 获取用户的MAC地址多种方法实例详解

    java 获取用户的MAC地址多种方法实例详解 这篇文章主要介绍了JAVA实现获取用户的MAC地址的多种方法实例,需要的朋友可以参考下 java实现获取用户的MAC地址方法: 方法一:将本机地址与局域 ...

  5. java 获取已有字体,java获取本机全部可用字体

    java获取本机所有可用字体 //just for fun,那个28个字母的函数满满都是恶心 import java.awt.GraphicsEnvironment ; class Tester { ...

  6. android 获取网卡mac_Android获取本机Mac地址及IP地址方法

    1.Android  获取本机Mac 地址方法: 需要在AndroidManifest.xml文件中添加权限: public String getLocalMacAddress() { WifiMan ...

  7. 用java获取本机IP地址

    在网上找了几个用java获取本机IP地址的代码,发现都少都有些不完美,自己整理了一下.突然之间很想把自己的IP地址给获取了,虽然用系统自带命令可以得到,但自己想写一个程序获取一下,到网上搜索了一下ja ...

  8. ruby获取本机mac加密生成lisence文件,客户端根据lisence许可调用主程序

    需求: 提取客户本机Mac地址,生成Md5值.(客户使用,提供给厂商) 对该Md5值进行加密,生成lisence.txt文件.(厂商生成) 获取当前目录的lisence文件,解密,如果解密后与加密之前 ...

  9. Unity——获取本机MAC地址

    Unity中获取本机Mac地址,常用于类似绑定设备的加密情况中,限制程序只可以在固定的设备上使用.首先我们需要在脚本中引用System.Net.NetworkInformation程序集,然后使用Ne ...

最新文章

  1. linux 内核 config_localversion_auto,关于CONFIG_LOCALVERSION_AUTO设置去掉内核版本号SVN后缀...
  2. HTML的标签描述7
  3. Linux 命令 查看监听端口
  4. sql2005主从数据库同步配置
  5. spring中加入log4j
  6. 【CentOS】安装部署jenkins从git获取代码[转]
  7. java cms bootstrap_thinkcms: Java CMS系统,完善的后台功能,大气的前台页面. 使用springMVC,hibernate,bootstrap,amazeui....
  8. 用 Python 识别图片中的文字
  9. c语言通过定义变量实现对,C语言中定义变量“#X”,X##, ##X 和“##X##”用意
  10. 大厂Java八股文面试真题汇总,2022秋招必备,面试不慌
  11. SQL server 认证考试
  12. 2022年最新配置:Eslint+Prettier+Volar
  13. 音视频基本概念和FFmpeg的简单入门(新手友好+FFmpeg资料分享)
  14. Tikz 画图技巧二
  15. html切换导航不同页面,HTML按钮:导航到其他页面 - 不同的方法
  16. 38译码器真值表讲解_74138译码器真值表及引脚图功能
  17. [教程]使用Lite MP4 Tool专业制作MP4(AVC)视频格式 - 指导教程
  18. 考研复试(控制工程专硕)及大学本科(物联网工程)知识点回顾(一)——C语言/单片机
  19. PyTorch 1.0 中文官方教程:空间变换器网络教程
  20. C语言入门——编程题

热门文章

  1. 深入理解JVM内存区域与内存分配
  2. PowerDesigner导入SQL脚本
  3. 51CTO博客移动化意味着什么?IT博主可以搞事情了!
  4. cocos2dx游戏--欢欢英雄传说--添加游戏背景
  5. Web服务之Nginx浅析
  6. 学习《html5.css3.0》网页布局和样式精粹(第二天)
  7. link time code generation
  8. 图像抠图Image Matting算法调研
  9. 关于@Autowired后Spring无法注入的问题
  10. Nginx - 日志格式及输出