tenho esse erro ao compilar o codigo abaixo alguém sabe resolver?
Project “despertador” loaded
Project settings saved
Building "despertador"
C:\WTK22\apps\despertador\src\despertador.java:9: despertador is not abstract and does not override abstract method destroyApp(boolean) in javax.microedition.midlet.MIDlet
public class despertador extends MIDlet implements ItemStateListener, CommandListener
^
1 error
com.sun.kvem.ktools.ExecutionException
Build failed
meu codigo fonte
import java.util.<em>;
import javax.microedition.midlet.</em>;
import javax.microedition.lcdui.*;
import java.util.Timer;
import java.util.TimerTask;
public class despertador extends MIDlet implements ItemStateListener, CommandListener
{
private Display display; // faz referência ao Objeto Display
private Form fmMain; // fomulário Principal
private Command cmdespertar; // inicia o cronômetro
private Command cmReinicia; // reinicializar a data e hora atuais
private Command cmSair; // sai da MIDlet
private DateField dfdespertatempo; // Duração do alarme
private int dateIndex; // Indice do campo DataField no formuláro
private Date dataatual; // Data Atual … Muda quando pressionar Reinicializar
private Timer tmdesperta; // Cronômetro
private despertatempo ttdesperta; // Chamado pelo cronômetro
private boolean datavalida = false;// O input do usuário é valido?
public despertador()
{
display = Display.getDisplay(this);
// Formulário Principal
fmMain = new Form("Quando despertar:");
// Armazena a data de hoje
dataatual = new Date();
// Campo DataField com a data de hoje como padrão
dfdespertatempo = new DateField("",DateField.DATE_TIME);
dfdespertatempo.setDate(dataatual);
// Todos os Comandos
cmdespertar = new Command("Despertar", Command.SCREEN, 1);
cmReinicia = new Command("Reinicializar", Command.SCREEN,1);
cmSair = new Command("Sair", Command.EXIT,1);
// Adiciona no formulário e espera por eventos
dateIndex = fmMain.append(dfdespertatempo);
fmMain.addCommand(cmdespertar);
fmMain.addCommand(cmReinicia);
fmMain.addCommand(cmSair);
fmMain.setCommandListener(this);
fmMain.setItemStateListener(this);
}
public void startApp()
{
display.setCurrent(fmMain);
}
public void pauseApp()
{
}
public void desroyApp(boolean unconditional)
{
}
public void itemStateChanged(Item item)
{
if (item == dfdespertatempo)
{
// Se o usuário selecionar data e/ou hora passada,
// configure um flag. estamos utilizando o gettime()
// método da classe Date que retorna o # de milissegundos
// desde 1 janeiro de 1970
if (dfdespertatempo.getDate().getTime() < dataatual.getTime())
datavalida = false;
else
datavalida = true;
}
}
public void commandAction(Command c, Displayable s)
{
if (c == cmdespertar)
{
if ( datavalida == false)
{
Alert al = new Alert(“Impossível configurar o alarme”,“por favor escolha outra hora e data.”, null, null);
al.setTimeout(Alert.FOREVER);
al.setType(AlertType.ERROR);
display.setCurrent(al);
}
else
{
// cria um novo cronometro
tmdesperta = new Timer();
ttdesperta = new despertatempo();
// Quantidade de tempo de espera
long amount = dfdespertatempo.getDate().getTime() - dataatual.getTime();
tmdesperta.schedule(ttdesperta,amount);
// Remove os comando
fmMain.removeCommand(cmdespertar);
fmMain.removeCommand(cmReinicia);
// Remove o campo DataField
fmMain.delete(dateIndex);
// Muda a menssagem do formulário
fmMain.setTitle("Disparando Alarme");
}
}
else if (c == cmReinicia)
{
// Zera a data e horas atuais
dfdespertatempo.setDate(dataatual = new Date());
}
else if ( c == cmSair)
{
destroyApp(false);
notifyDestroyed();
}
}
// Gerência a tarefa do cronômetro
private class despertatempo extends TimerTask
{
public final void run()
{
Alert al = new Alert(“Hora de Acordar!”);
al.setTimeout(Alert.FOREVER);
al.setType(AlertType.ALARM);
AlertType.ERROR.playSound(display);
display.setCurrent(al);
// Cancela essa taréfa de cronômetro
cancel();
}
}
}