Segundo erro recorrente de compilação do Java

Ocorreram alguns erros na segunda compilação do meu programa .java. São 29 erros “illegal start of expression”, provavelmente: começo de expressão ilegal. O erro ocorre em vários métodos, e provoca falta de ‘;’. Como posso resolver esses dois erros em todos os métodos?

Grande abraço ao pessoal do Java e do Kotlin.

Atenciosamente,
Ronaldo

Segue o código e a tela com o comando de compilação e seus erros:

// Demonstra os tratadores de eventos do mouse.
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
/*
<applet code="MouseEvents" width=300 height=<100>
</applet>
*/

public class MouseEvents extends Applet
    implements MouseListener, MouseMotionListener {

    String msg = "";
    int mouseX = 0, mouseY = 0; // coordenadas do mouse

    public void init() {
        int mouseX = 0, mouseY = 0; // coordenadas do mouse

        init() {
            addMouseListener(this);
            addMouseMotionListener(this);
        }

        // trata cliques no mouse.
        public void mouseClicked(MouseEvent me) {
            mouseX = 0;
            mouseY = 10;
            msg = "Mouseclicked.";
            repaint();
        }

        // trata a entrada do mouse da janela.
        public void mouseEntered(MouseEvent me) {
            mouseX = 0;
            mouseY = 10;
            msg = "Mouse entered.";
            repaint();
        }

        // Trata a saída do mouse da janela.
        public void mouseExited(MouseEvent  me) {
            mouseX = 0;
            mouseY = 10;
            msg = "Mouse exited.";
            repaint();
        }

        // Trata o pressionamento do botão.
        public void mousePressed(MouseEvent me) {
           // salva coordenadas 
            mouseX = me.getX();
            mouseY = me.getY();
            repaint();
        }

        // Trata a soltura do botão.
        public void mouseReleased(MouseEvent me) {
            // salva coordenadas
            mouseX = me.getX();
            mouseY = me.getYT();
            msg = "Up";
        }

        // Trata o mouse sendo arrastado.
        public void mouseDragged(MouserEvent me) {
        //salva coordenadas
        mouseY = me.getY();
        msg = "*";
        showStatus("Moving mouse at " + me.getX() + ", " +
            me.getY());
        }

        // Exibe msg na janela do applet nolocal X, Y atual.
        public void paint(Graphics g) {
            g.drawString(msg, mouseX, mouseY);
        }    
    }
}

Você criou diversos métodos dentro do método init da sua classe, métodos não podem conter métodos, o correto é que classes contenham métodos e que métodos executem um bloco de código único ou chamem outros métodos da mesma classe ou até mesmo métodos de outras classes.

Havia uma letra inserida… à qual foi corrigida. Mas ainda sobrou um erro (que eu não consigo enxergar).

Você pode me indicar porque o compilador diz que está faltando um ponto e vírgula?
Se trata… do erro anterior?

Segue o código e o erro de compilação em um “Print Screen SysRq”:

// Demonstra os tratadores de eventos do mouse.
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
/*
<applet code="MouseEvents" width=300 height=<100>
</applet>
*/

public class MouseEvents extends Applet
    implements MouseListener, MouseMotionListener {

    String msg = "";
    int mouseX = 0, mouseY = 0; // coordenadas do mouse

    public void init() {
            addMouseListener(this);
            addMouseMotionListener(this);
    }

     // trata cliques no mouse.
     public void mouseClicked(MouseEvent me) {
         mouseX = 0;
         mouseY = 10;
         msg = "Mouseclicked.";
         repaint();
     }

     // trata a entrada do mouse da janela.
     public void mouseEntered(MouseEvent me) {
         mouseX = 0;
         mouseY = 10;
         msg = "Mouse entered.";
         repaint();
     }

     // Trata a saída do mouse da janela.
     public void mouseExited(MouseEvent  me) {
         mouseX = 0;
         mouseY = 10;
         msg = "Mouse exited.";
         repaint();
     }

     // Trata o pressionamento do botão.
     public void mousePressed(MouseEvent me) {
        // salva coordenadas 
         mouseX = me.getX();
         mouseY = me.getY();
         repaint();
     }

     // Trata a soltura do botão.
     public void mouseReleased(MouseEvent me) {
         // salva coordenadas
         mouseX = me.getX();
         mouseY = me.getYT();
         msg = "Up";
     }

     // Trata o mouse sendo arrastado.
     public void mouseDragged(MouseEvent me) {
     //salva coordenadas
     mouseY = me.getY();
     msg = "*";
     showStatus("Moving mouse at " + me.getX() + ", " +
         me.getY());
     }

    // Trata mouse sendo movido.
    public void mouseMoved(MouseEvent me) {
        // exibe status
        showStatus("Mouving mouse at " + me.getX() + ", " + me.getY());
    }

     // Exibe msg na janela do applet nolocal X, Y atual.
     public void paint(Graphics g) {
         g.drawString(msg, mouseX, mouseY);
     }    
}

// Trata a soltura do botão.
public void mouseReleased(MouseEvent me) {
    // salva coordenadas
    mouseX = me.getX();
    mouseY = me.getYT(); // Este método aqui está errado, o correto é getY()
    msg = "Up";
}
1 curtida

Corrigido o erro, caracter ‘T’ sobrando na linha ‘mouseY = me.getYT();’, apareceu um erro que não compreendo, pois no original do livro não há declaração de ‘public static void main(String[] args)’.

Sendo assim ‘main(String[] args)’ deve ser declarada em outro lugar. Qual é a origem desse erro?

Não há mais erros de digitação: o q

Corrigido o erro, caracter ‘T’ sobrando na linha ‘mouseY = me.getYT();’, apareceu um erro que não compreendo, pois no original do livro não há declaração de ‘public static void main(String[] args)’.

Sendo assim ‘main(String[] args)’ deve ser declarada em outro lugar. Qual é a origem desse erro?

O programa deveria ser iniciado imediatamente após a compilação, sendo exibido na tela. Houve geração do arquivo ‘.class’.

Me desculpe, tantos erros, atenciosamente,
Ronaldo

P.S.: Seguem abaixo o código do arquivo ‘.java’ e sua impressão da compilação (sem erros, o que gerou o arquivo ‘.class’. E o comando de execução com seu único erro.

// Demonstra os tratadores de eventos do mouse.
import java.awt.;
import java.awt.event.
;
import java.applet.;
/

<applet code=“MouseEvents” width=300 height=<100>

*/

public class MouseEvents extends Applet
implements MouseListener, MouseMotionListener {

String msg = "";
int mouseX = 0, mouseY = 0; // coordenadas do mouse

public void init() {
        addMouseListener(this);
        addMouseMotionListener(this);
}

 // trata cliques no mouse.
 public void mouseClicked(MouseEvent me) {
     mouseX = 0;
     mouseY = 10;
     msg = "Mouseclicked.";
     repaint();
 }

 // trata a entrada do mouse da janela.
 public void mouseEntered(MouseEvent me) {
     mouseX = 0;
     mouseY = 10;
     msg = "Mouse entered.";
     repaint();
 }

 // Trata a saída do mouse da janela.
 public void mouseExited(MouseEvent  me) {
     mouseX = 0;
     mouseY = 10;
     msg = "Mouse exited.";
     repaint();
 }

 // Trata o pressionamento do botão.
 public void mousePressed(MouseEvent me) {
    // salva coordenadas 
     mouseX = me.getX();
     mouseY = me.getY();
     repaint();
 }

 // Trata a soltura do botão.
 public void mouseReleased(MouseEvent me) {
     // salva coordenadas
     mouseX = me.getX();
     mouseY = me.getY();
     msg = "Up";
 }

 // Trata o mouse sendo arrastado.
 public void mouseDragged(MouseEvent me) {
 //salva coordenadas
 mouseY = me.getY();
 msg = "*";
 showStatus("Moving mouse at " + me.getX() + ", " +
     me.getY());
 }

// Trata mouse sendo movido.
public void mouseMoved(MouseEvent me) {
    // exibe status
    showStatus("Mouving mouse at " + me.getX() + ", " + me.getY());
}

 // Exibe msg na janela do applet nolocal X, Y atual.
 public void paint(Graphics g) {
     g.drawString(msg, mouseX, mouseY);
 }    

}

Quando postar seu código fonte no fórum, depois de ter feito o Ctrl+C Ctrl+V, selecione o código fonte e clique no botão de formatação de código, que tem o seguinte símbolo: </>.

Dias atrás eu já havia questionado você em outro tópico sobre o motivo de estar implementando Applets.
Applets não são mais suportados pelos browsers desde 2015.

Uma classe Java para ser executada pela máquina virtual, precisa ter um ponto de entrada, esse ponto de entrada é um método com a seguinte assinatura:

public static void main(String[] args) {
    // aqui você inicia a execução de seu programa ou sistema
}

Também pode ser assim:

public static void main(String... args) {
    // aqui você inicia a execução de seu programa ou sistema
}

Sua classe MouseEvents não possui o método main, então você não pode executá-la como um programa Java.
:man_shrugging:

Ronaldo, qual é o livro que você está lendo?
Por acaso é o Java para Dummies?
Se for, pode abandonar, eu comprei esse livro quando estava começando a aprender Java e ele mais atrapalhou do que ajudou, esse é um livro que só ensina a implementar Applets.
Como eu já mencionei, os browsers não executam mais Applets desde 2015.

Falando a grosso modo, um Applet nada mais era do que uma espécie de Panel AWT que você podia embutir em uma página Web e nesse cara poderia implementar alguma funcionalidade que, ná época não era possível com HTML, CSS ou JavaScript.

1 curtida

O livro que estou utilizando é o Java Para iniciantes, autor Herbert Schildt, bookman livro de homem. Já compreendi o comportamento dos applets e lí grande parte dos processos de swing, mas só vou aplicar os procedimentos posteriores para abandonar applets quando fizer alguns aplicativos applet(s) funcionarem no meu computadores.

Como você está, Staroski? Eu estava um pouco afastado dos meus emails e vou aguardar seu esforço para retornar a modificar o arquivo Java ‘.java’. Eu fiz algumas modificações usando tag do HTML, por isto vou te mandar a última versão do appet (de extensão ‘.java’).

Por favor, dê uma olhada no código java e me aponte a forma mais fácil de rodar o programa. Até logo. (Não abandonarei o applet até rodar este programa, ‘MouseEvents’). Segue abaixo o código:

// Demonstra os tratadores de eventos do mouse.
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
/*
<applet code="MouseEvents" width=300 height=<100>
</applet>
*/

public class MouseEvents extends Applet
    implements MouseListener, MouseMotionListener {

    String msg = "";
    int mouseX = 0, mouseY = 0; // coordenadas do mouse

    public void init() {
            addMouseListener(this);
            addMouseMotionListener(this);
    }

     // trata cliques no mouse.
     public void mouseClicked(MouseEvent me) {
         mouseX = 0;
         mouseY = 10;
         msg = "Mouseclicked.";
         repaint();
     }

     // trata a entrada do mouse da janela.
     public void mouseEntered(MouseEvent me) {
         mouseX = 0;
         mouseY = 10;
         msg = "Mouse entered.";
         repaint();
     }

     // Trata a saída do mouse da janela.
     public void mouseExited(MouseEvent  me) {
         mouseX = 0;
         mouseY = 10;
         msg = "Mouse exited.";
         repaint();
     }

     // Trata o pressionamento do botão.
     public void mousePressed(MouseEvent me) {
        // salva coordenadas 
         mouseX = me.getX();
         mouseY = me.getY();
         repaint();
     }

     // Trata a soltura do botão.
     public void mouseReleased(MouseEvent me) {
         // salva coordenadas
         mouseX = me.getX();
         mouseY = me.getY();
         msg = "Up";
     }

     // Trata o mouse sendo arrastado.
     public void mouseDragged(MouseEvent me) {
     //salva coordenadas
     mouseY = me.getY();
     msg = "*";
     showStatus("Moving mouse at " + me.getX() + ", " +
         me.getY());
     }

    // Trata mouse sendo movido.
    public void mouseMoved(MouseEvent me) {
        // exibe status
        showStatus("Mouving mouse at " + me.getX() + ", " + me.getY());
    }

     // Exibe msg na janela do applet nolocal X, Y atual.
     public void paint(Graphics g) {
         g.drawString(msg, mouseX, mouseY);
     }    
}

Veja também o resultado de um print na tela da última compilação, com nenhum erro e o comando de execução (por arquivo em lote ‘comp.bat’, com erro no ‘.class’. Segue abaixo o print:

Como eu já disse, sua classe MouseEvents não possui o método main , então você não pode executá-la como um programa Java.

Para executar ela como Applet você precisa escrever uma página HTML e embutir o Applet nela.

Mas isso não vai mais funcionar pois Applets foram descontinuados.

Na boa, esquece Applet e vai pra frente.