Erro método run Runnable

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:

  1. 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;

  2. O tipo Runnable que você está instanciando não é a interface java.lang.Runnable, e não possui o método run();

  3. 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.

2 curtidas

É, 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 :joy:. 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.