Obter endereço mac de linux e windows

Ola pessoal, to quebrando cabeça aqui para descobrir como que pego o endereço mac de uma maquina no java. Estou utilizando java desktop. São 3 da manha aqui em brasilia e eu to quebrando cabeça com isso, ja pesquisei em varios sites, na maioria eles dao este codigo aqui:

package com.mkyong;
 
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();
 
	}
 
   }
 
}

Porem sempre da este mesmo erro em todas as classes:

Exception in thread "main" java.lang.NullPointerException
	at teste.tata.main(tata.java:20)

O erro é nessa linha:

byte[] mac = network.getHardwareAddress();

Não sei mais o que faço, espero que me ajudem, bom, vou dormir um pouquinho ali pq ja to que nem um zumbi aqui, vlw

Olá,

eu não sei o quê você está fazendo de errado, mas eu consegui executar o seu código (no windows). No linux, provavelmente irá funcionar também, visto que o código utiliza API do Java, nada feito na mão por terceiro.

Abs!

Olá,

identifiquei o erro. Você está executando o método main da classe app através de outro método, da classe tata.

Veja a classe exibida na sua exceção:

teste.tata.main

Se você estivesse invocado o método main, da classe app, e uma exceção ocorresse você teria a seguinte linha no stacktrace:

com.mkyong.app.main

Tente executar direto da classe app, tenho certeza que ira funcionar.

Abs!

Ola newbcc, testei aqui numa maquina windows e funcionou perfeitinho, a respeito das classes que vc citou, desculpa eu coloquei o exemplo da internet e na hora dos erros eu coloquei o meu exemplo modificado, kkkkkkk, ai ficou com classes diferentes. Bom, depois de arrumar tudo, fiz o teste no windows, funcionou perfeitamente, porem, no linux deu problema. ele mer retorna um ip do localhost: 127.0.1.1 e ocorreu um java.lang.nullPointerException na hora de puxar o mac. Estou desconfiado que o problema é que esta maquina linux é o servidor do apache e do banco, ai ele nao consegue puxar o ip certo, como ele precisa do ip para puxar o mac, entao ele nao consegue entendeu. No windows ele puxa o ip certo: 192.168.10.5 e o mac vem certinho tambem. Se alguem tiver alguma dica de como puxar o ip real da maquina, independente que tenho local host ou nao, por favor, me ajudem.

Muito Obrigado ai newbcc, vc me ajudou pacaramba.