Applet não roda!

2 respostas
emso.exe

Pessoal ao executar um applet ele simplesmente não aparece no browser, somente a mensagem de "falha na execução do aplicativo", compilo o arquivo java sem erros! Segue código e log de erro do jdk.

import javax.swing.*;
import java.applet.*;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.BorderLayout;
import java.awt.event.*;

public class AppletIMC extends Applet implements ActionListener
{
       private JLabel l1=new JLabel(" Altura: ");
       private JLabel l2=new JLabel(" Peso: ");
       private JLabel l3=new JLabel(" IMC: ");
       private JTextField tf1=new JTextField();
       private JTextField tf2=new JTextField();
       private JTextField tf3=new JTextField();
       private JButton b1=new JButton(" Executar ");
       private JPanel p1=new JPanel(new GridLayout(3,2));
       private JPanel p2=new JPanel(new GridLayout(1,1));
       private String altura;
       private String peso;
       private static boolean erro;
       private static String mens;
       String s = String.valueOf(getImc());

       public void init()
       {
             b1.addActionListener(this);
             p1.add(l1);
             p1.add(tf1);
             p1.add(l2);
             p1.add(tf2);
             p1.add(l3);
             p1.add(tf3);
             p2.add(b1);
             add(p1,BorderLayout.CENTER);
             add(p2,BorderLayout.SOUTH);
        }

        public String setAltura(String _altura)
        {
               altura = _altura;
               return altura;
        }
        public String setPeso(String _peso)
        {
                peso = _peso;
                return peso;
        }
        public String getAltura()
        {
                return altura;
        }
        public String getPeso()
        {
                return peso;
        }
        public float getImc()
        {
                return Float.parseFloat(peso)/(Float.parseFloat(altura)*Float.parseFloat(altura));
        }

        public void validaDados()
        {
                setErro(false);
                if (getAltura().equals(""))
                {
                    setErro(" O campo ALTURA é de preenchimento obrigatório! ");
                    return;
                }
                else
                try
                {
                    Float.parseFloat(getAltura());
                }
                catch(Exception e)
                {
                    setErro(" O campo ALTURA deve ser numérico! ");
                }
                if (getPeso().equals(""))
                {
                    setErro(" O campo PESO é de preenchimento obrigatório! ");
                    return;
                }
                else
                try
                {
                    Float.parseFloat(getPeso());
                }
                catch(Exception e)
                {
                    setErro(" O campo PESO deve ser numérico! ");
                }
        }

	public static void setErro(boolean _erro)
	{
	    erro = _erro;
	}
	public static void setErro(String _mens)
	{
	    erro = true;
	    mens = _mens;
	}
	public static boolean getErro()
	{
	    return erro;
	}
	public static String getMens()
	{
	    return mens;
	}

    public void actionPerformed(ActionEvent e)
    {
       setAltura(tf1.getText());
       setPeso(tf2.getText());
       validaDados();
       if (getErro())
          JOptionPane.showMessageDialog(null,getMens());
       else
          tf3.setText(s);
    }
}
Plug-in Java 1.6.0_25
Usando versão JRE 1.6.0_25-b06 Java HotSpot(TM) Client VM
Diretório base do usuário = C:\Users\unisanta
----------------------------------------------------
c:   limpar janela do console
f:   concluir objetos da fila de finalização
g:   coleta de lixo
h:   exibir esta mensagem de ajuda
l:   descartar lista de carregadores de classes
m:   imprimir uso de memória
o:   registro do disparador
q:   ocultar console
r:   recarregar configuração da política
s:   descartar propriedades do sistema e de implantação
t:   descartar lista de threads
v:   descartar pilha de threads
x:   limpar cache do carregador de classes
0-5: definir nível de rastreamento como <n>
----------------------------------------------------


java.lang.reflect.InvocationTargetException
	at com.sun.deploy.util.DeployAWTUtil.invokeAndWait(Unknown Source)
	at sun.plugin2.applet.Plugin2Manager.runOnEDT(Unknown Source)
	at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
	at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
	at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
	at java.lang.Float.parseFloat(Unknown Source)
	at AppletIMC.getImc(AppletIMC.java:59)
	at AppletIMC.<init>(AppletIMC.java:23)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.lang.reflect.Constructor.newInstance(Unknown Source)
	at java.lang.Class.newInstance0(Unknown Source)
	at java.lang.Class.newInstance(Unknown Source)
	at sun.plugin2.applet.Plugin2Manager$12.run(Unknown Source)
	at java.awt.event.InvocationEvent.dispatch(Unknown Source)
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.awt.EventQueue.access$000(Unknown Source)
	at java.awt.EventQueue$1.run(Unknown Source)
	at java.awt.EventQueue$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
Exceção: java.lang.reflect.InvocationTargetException

2 Respostas

ViniGodoy

Como sua exception mesmo indica, o erro ocorreu durante a inicialização do seu applet (método init) ao chamar o método getImc(). Provavelmente ao inicializar a String s, declarada entre suas propriedades, na linha 23. Veja:

at java.lang.Float.parseFloat(Unknown Source)
	at AppletIMC.getImc(AppletIMC.java:59)
	at AppletIMC.<init>(AppletIMC.java:23)

Note que ela chama o método getImc(), mas naquele ponto, não existe nenhum valor na variável peso ou altura. Nesse caso, elas valem null, o que faz o método Float.parseFloat disparar uma NullPointerException.

Remova a linha 23 e substitua a linha 121 para:

tf3.setText(String.format("%.2f", getImc()));

PS: Applets não são um assunto de “Java básico”, e sim, de Desenvolvimento Web ou, caso a dúvida seja em Swing, para Interface Gráfica. Tive que mover seu tópico. Procure ler bem a descrição dos fóruns antes de postar, senão você corre o risco de não ser respondido.

emso.exe

Fiz as alterações e deu certo!

Vou ter mais atenção quando postar…

Obrigado! Valew!

Criado 28 de maio de 2011
Ultima resposta 28 de mai. de 2011
Respostas 2
Participantes 2