Applet Java

Bom dia pessoal,

Sou novo em java, e estou tentando fazer funcionar um applet que fiz no navegador, mas esta dando erro e na faco ideia por que esta gerando isso :frowning:

Eu preciso pegar o mac address do usuario que estiver acessando o “site” que é um sistema onde preciso fazer uma verificacao de maquina para efetuar o login.

Achei a funcao e ela compila certinho no eclipse, mas quando uso o .class no html nao funciona :frowning:

Alguem pode me ajudar?

<applet code="getMac.class" width="402" height="147"></applet>

import java.io.*;
import java.util.regex.*;  
import java.applet.Applet;

public class getMac {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws IOException {
		String address = new getMac().getMacAddress();
		System.out.println(address);
	}

	public String getMacAddress() throws IOException {
		String macAddress = null;
		String command = "ipconfig /all";
		Process pid = Runtime.getRuntime().exec(command);
		BufferedReader in = new BufferedReader( new InputStreamReader(pid.getInputStream()));
		while (true) {
			String line = in.readLine();
			if (line == null)
			break;
			Pattern p = Pattern.compile(".*Physical Address.*: (.*)");
			Matcher m = p.matcher(line);
			if (m.matches()) {
				macAddress = m.group(1);
				break;
			}
		}
		in.close();
		return macAddress;
	}

}

bom, eu não vejo nenhum problema mas sei la pode ser o null do mcadress

Runtime.getRuntime().exec(command);  

Isso não pode ser executado em uma applet, a menos que ela seja assinada.

Hum, pode me ajudar com uma luz,
como fazer funcionar ? Desculpa mais não entendi o assinada, certificado digital ? esse aplicativo vai rodar em um sistema que esta em https://

celo surf,

Para criar um applet você precisa estender a classe Applet ou JApplet. Pode implementar o método init() para inicializar o applet.

Criei o applet parecido com o que você quer abaixo. Consegui executar e obter o endereço físico no console. Consegui executar também como applet no browser. Está dando uma exception que aparece na JLabel (coloquei para jogar a classe da Exception e a mensagem na JLabel, dentro do catch).

[code]import javax.swing.;
import java.io.
;
import java.util.regex.*;

public class AppletMac extends JApplet {
public static void main(String args[]) {
System.out.println(new AppletMac().mostraMac());
}

public void init() {
	JLabel jl = new JLabel(mostraMac());
	JPanel pn = new JPanel();
	pn.add(jl);
	setContentPane(pn);
}
  
public String mostraMac(){
	String result;
	try{
		result = getMacAddress();
		if(result == null) 
			result = "endereço nulo";
	}catch(Exception e){
		result = e.getClass().toString() + " - " + e.getMessage();
	}
	return result;
}	

public String getMacAddress() throws IOException {  
    String macAddress = null;  
    String command = "ipconfig /all";  
    Process pid = Runtime.getRuntime().exec(command);  
    BufferedReader in = new BufferedReader( new InputStreamReader(pid.getInputStream()));

    while (true) {  
        String line = in.readLine();  
        if (line == null)  
        break; 
        Pattern p = Pattern.compile(".*Endereço físico.*: (.*)");  
        Matcher m = p.matcher(line);  
        if (m.matches()) {  
            macAddress = m.group(1);  
            break;  
        }  
    }  
    in.close();  
    return macAddress;  

} 

}[/code]

Eu coloquei o Pattern.compile(".Endereço físico.: (.*)"); porque no meu computador o ipconfig /all retorna em português (você tinha colocado Physical Address). Em outro computador que testei ele retorna Endereço Físico (Físico começando em maiúscula) e não reconhece o acento.
Acho que esse é um problema que você terá que ver, porque se você rodar o applet na Internet cada computador pode retornar o ipconfig de uma forma diferente, e se não for Windows talvez nem tenha ipconfig.

O erro que dá quando executo o applet no browser é da classe java.security.AccessControlException. A mensagem é access denied (java.io.FilePermission <> execute).
O que está parecendo é que o applet não tem permissão para executar comandos de IO. Mas não sei como fazer para dar essa permissão. Pode ser que seja o problema do applet ser assinado, como disse o entanglement.