Applet não carrega

3 respostas
J

Pessoal, escrevi esse applet para pegar o mac do cliente. Mas não está carregando…
Alguém poderia dizer qual o problema? Agradeço desde já…

import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
import java.util.ArrayList;
import java.applet.Applet;

public class Mac extends Applet
{

	public static String macToString(NetworkInterface ni) throws SocketException
	{
		String retorno = "";
		
		byte byMac[] = ni.getHardwareAddress();
		
		if(byMac != null)
		{
			String separador = "";
			for(byte o : byMac)
			{
				retorno += separador;
				retorno += String.format("02X", o);
				separador = ":";
			}
			return retorno.toUpperCase();
		}
		return null;	
	}

	
	public static String getFirstMac()
	{
		try
		{
			Enumeration<NetworkInterface> nis = NetworkInterface.getNetworkInterfaces();
			
			while(nis.hasMoreElements())
			{
				String mac = macToString(nis.nextElement());
				if(mac != null)
				{
					return mac;
				}
			}
		
		
		}
		catch(SocketException ex)
		{
			return("SocketExcepion:: "+ex.getMessage());
		}				
		
		return "Não identificado";
	}			
}

E é assim que eu chamo via javascript:

<applet height="0" width="0" code="Mac.jar" name="objmac">    
</applet>

<script type="text/javascript">
    alert(document.objMac.getFistMac());
</script>

3 Respostas

T

Provavelmente você precisará fazer três coisas:

  1. O nome é “fist” (punho) ou “first” (primeiro)? Decida-se.

  2. Assinar sua applet

  3. Como seu método que executa operações privilegiadas (consultar hardware) é chamado via Javascript, é necessário usar um truque; sem usar esse truque, mesmo assinando a applet você não consegue obter a informação. Procure na Internet algum código semelhante a este, que aparece nesta documentação:

http://java.sun.com/j2se/1.5.0/docs/api/java/security/AccessController.html

J

Vlw msm Thingol, vou testar aqui!

Obs.: É “first” msm, digitei errado :lol

J

O código no applet ficou:

import java.net.NetworkInterface;
import java.net.SocketException;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.Enumeration;
//import java.util.ArrayList;
import java.applet.Applet;

/**
 * @author joao.carlos
 *
 */
public class Mac extends Applet
{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public static String macToString(NetworkInterface ni) throws SocketException
	{
		String retorno = "";
		
		byte byMac[] = ni.getHardwareAddress();
		
		if(byMac != null)
		{
			String separador = "";
			for(byte o : byMac)
			{
				retorno += separador;
				retorno += String.format("%02X", o);
				
				separador = ":";
			}
			return retorno.toUpperCase();
		}
		return null;	
	}
	
	@SuppressWarnings("unchecked")
	public static String getFirstMac()
	{
		try
		{
			Enumeration<NetworkInterface> nis = (Enumeration<NetworkInterface>)AccessController.doPrivileged(new PrivilegedAction() {
				public Enumeration<NetworkInterface> run()
				{
					try {
						return NetworkInterface.getNetworkInterfaces();
					} catch (SocketException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
						return null;
					}	
				}
			});
			
			while(nis.hasMoreElements())
			{
				String mac = macToString(nis.nextElement());
				if(mac != null)
				{
					return mac;
				}
			}
		}
		catch(SocketException ex)
		{
			return("SocketExcepion:: "+ex.getMessage());
		}
						
		
		return "Não identificado";
	}
}

e no javascript:

<!DOCTYPE  HTML  PUBLIC  "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
      <head>
            <title>teste applet</title>
            
      </head>
      <body>
           <applet archive="../../Desktop/mac jar/Mac.jar" name="objMac">
           </applet>
           <script language="javascript">
           		alert(document.objMac.getFirstMac());		
           </script>      
           
           </body>
</html>

Mas dá o seguine erro: O objeto não dá supoe para propriedade ou método.

Outra coisa: Caso o problema seja com o jar, tem como eu usar o class diretamente?

Criado 9 de outubro de 2008
Ultima resposta 9 de out. de 2008
Respostas 3
Participantes 2