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: :frowning:](https://www.guj.com.br/images/emoji/twitter/frowning.png?v=9)
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: :frowning:](https://www.guj.com.br/images/emoji/twitter/frowning.png?v=9)
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.