Alguém sabe me explicar qual o problema desse código?
Olá, pra mim funciona.
Vc está usando a classe Runnable correta?
Vejo 3 possibilidades:
-
Você está usando java 1.5, então só é válido anotar com
@Override
os métodos sobrescritos de outra classe, não de interfaces; -
O tipo
Runnable
que você está instanciando não é a interfacejava.lang.Runnable
, e não possui o métodorun()
; -
As configurações do compilador de sua IDE estão configuradas para apontar erro quando você anota com
@Override
um método implementado de uma interface.
É, eu fui ver os imports e meio que Runnable não está sendo importada. E o Eclipse simplesmente não está me dizendo que tem erro por causa disso, e mesmo importando o erro continua. Eu estou usando Java 1.8. Acho que minha IDE surtou.
Código completo:
package com.tkfentretenimento.simple_call.start;
import com.tkfentretenimento.simple_call.model.FilesDAO;
public class Start {
public static void main(String[] args) {
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
@Override
public void run() {
FilesDAO.saveAll();
}
}));
FilesDAO.initialize();
}
}
Obs: Se eu clicar na instância de Runnable com o CNTRL pressionado, eu sou direcionando para java.lang.Runnable.class.
Editado
Forcei a execução do projeto pra ver se era a IDE acusando erros sem motivo, daí recebi essa exceção:
Exception in thread "Thread-0" java.lang.Error: Unresolved compilation problem:
The method run() of type new Runnable(){} must override a superclass method
at com.tkfentretenimento.simple_call.start.Start$1.run(Start.java:9)
at java.lang.Thread.run(Unknown Source)
Por acaso você não criou uma classe Runnable
dentro do pacote com.tkfentretenimento.simple_call.start
?
Experimenta fazer isso:
Runtime.getRuntime().addShutdownHook(new Thread(new java.lang.Runnable() {
@Override
public void run() {
FilesDAO.saveAll();
}
}))
Pior que não.
Tira fora o @Override
, de alguma forma sua IDE está configurada para compilar como Java 1.5 ou anterior
Olá, Thallysson
Veja se o seu projeto esta configurado para usar o java 8. Acesse no eclipse:
Botão direito no seu projeto > Properties > Project Facets
No checkbox “Java” verifique se na coluna Version esta 1.8, caso não esteja é só clicar na seta ao lado do número da versão e alterar.
Eu deletei esse projeto por outros motivos, e comecei outro, daí nesse outro, enfrentei o mesmo problema . Nesse projeto antigo quando eu removia o @Override dava erro, mas nesse novo não dá. Enfim, pelo menos meu problema foi resolvido. O que me deixa curioso é isso daqui:
Esse trecho de código é de outro projeto que eu tenho no meu Eclipse. E não dá erro!
Tá sim, mas obrigado por responder.