Introdução: por que o Eclipse está gritando com você?
\n\nVocê importou um projeto de terceiros no Eclipse, clicou em Build e, de repente — dezenas de cruzes vermelhas. Erro: "Must Override a Superclass Method". Familiar? Se você está aprendendo a programar em Java ou trabalhando com código de outros, essa situação é um verdadeiro baque. Especialmente quando o projeto compilava perfeitamente em outra IDE ou via Maven.
No Stack Overflow, essa pergunta acumulou milhares de visualizações. E não é à toa: o problema é traiçoeiro. O Eclipse é um ambiente poderoso, mas suas configurações de compilador podem pregar peças. Neste artigo, vamos analisar de onde vem o erro "Must Override a Superclass Method" e, principalmente, como corrigi-lo de uma vez por todas.
Vamos abordar três causas principais e fornecer instruções passo a passo com exemplos reais de código. Você aprenderá como configurar o Eclipse para que ele não reclame de código correto e como evitar esse problema no futuro.
\n\nO que significa o erro "Must Override a Superclass Method"?
\n\nO erro ocorre quando você usa a anotação @Override antes de um método que, na opinião do Eclipse, não sobrescreve um método da classe pai ou interface. Na verdade, o problema geralmente não está no seu código, mas nas configurações do compilador Java no Eclipse.
A anotação @Override foi introduzida no Java 5 (1.5) para métodos que sobrescrevem métodos de superclasse. Mas no Java 6, seu uso foi permitido também para métodos que implementam interfaces. Se o seu projeto está configurado para Java 5 e você escreve código para Java 8 — o Eclipse reclamará.
Aqui está um exemplo típico que causa o erro:
\n\npublic interface Animal {\n void makeSound();\n}\n\npublic class Dog implements Animal {\n @Override\n public void makeSound() {\n System.out.println("Woof!");\n }\n}\n\n\nSe o nível de compilação do projeto for Java 5, o Eclipse dirá: "Must Override a Superclass Method". Embora o código esteja absolutamente correto para Java 6 e superior.
\n\nCausa 1: Nível de compilação incorreto (Compiler Compliance Level)
\n\nEsta é a causa mais comum. O Eclipse tem uma configuração chamada Compiler compliance level, que determina qual versão do Java ele espera. Se você importar um projeto criado em outra IDE, essa configuração geralmente fica definida para uma versão desatualizada.
\n\nComo corrigir:
\n- \n
- Clique com o botão direito no projeto → Properties. \n
- Vá para Java Compiler. \n
- Desmarque a opção "Use compliance from execution environment". \n
- Selecione o Compiler compliance level — por exemplo, 1.8 ou 11 (dependendo do seu projeto). \n
- Clique em Apply and Close. \n
- Recompile o projeto: Project → Clean. \n
Importante: Se você tiver vários JDKs instalados, certifique-se de que em Installed JREs (Window → Preferences → Java → Installed JREs) a versão correta esteja especificada. Caso contrário, o Eclipse pode não encontrar o compilador necessário.
\n\nCausa 2: A biblioteca JRE System Library não corresponde ao nível de compilação
\n\nÀs vezes, o projeto tem uma biblioteca JRE System Library de versão antiga (por exemplo, J2SE-1.4), enquanto no código você usa anotações do Java 5+. O Eclipse percebe essa incompatibilidade e gera o erro.
\n\nComo corrigir:
\n- \n
- Clique com o botão direito no projeto → Build Path → Configure Build Path. \n
- Vá para a aba Libraries. \n
- Encontre JRE System Library. \n
- Remova-a (botão Remove). \n
- Clique em Add Library → JRE System Library → Next. \n
- Selecione Workspace default JRE (ou a versão desejada do JDK). \n
- Clique em Finish e depois em Apply and Close. \n