我们正在尝试使用 Java Applet 获取客户端 MAC ID。小程序通过 HTML 页面加载。相同的代码如下所示:
public class mainRun extends Applet{
private static final long serialVersionUID = -4939998186435587428L;
String macAddr="";
public void paint(Graphics g)
{
try
{
System.out.println("Start");
InetAddress ip = InetAddress.getLocalHost();
System.out.println((new StringBuilder("Current IP address : "+ip.toString())));
NetworkInterface network = NetworkInterface.getByInetAddress(ip);
byte mac[] = network.getHardwareAddress();
System.out.println("mac : "+mac.toString());
System.out.print("Current MAC address : ");
StringBuilder sb = new StringBuilder();
for(int i = 0; i < mac.length; i++)
sb.append(String.format("%02X%s", new Object[] {
Byte.valueOf(mac[i]), i >= mac.length - 1 ? "" : "-"
}));
System.out.println(sb.toString());
macAddr=String.valueOf(sb);
}
catch(SocketException e)
{
macAddr=e.toString();
e.printStackTrace();
}
catch (Exception e) {
macAddr=e.toString();
e.printStackTrace();
}
g.drawString("HELLO: "+macAddr, 100, 100);
}
}
然而,在使用 getHardwareAddress() 方法时,我们得到了空指针异常。
什么可能导致这个问题?
此外,当我在本地机器上运行与 Java Applet 相同的类时,我得到了所需的输出。当 Applet jar 放置在服务器上并且 applet 加载到客户端计算机上时,我遇到了这个问题。