Obter endereço mac de linux e windows

3 respostas
G

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

3 Respostas

N

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!

N

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!

G

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.

Criado 21 de outubro de 2011
Ultima resposta 21 de out. de 2011
Respostas 3
Participantes 2