Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Diferença entre meu projeto com projeto do Tomcat

Não estou conseguindo entender/achar o problema do meu eclipse+tomcat.

HomeController.java

@Controller
public class HomeController{


    @Autowired
    ProdutoDAO produtoDao;

    @RequestMapping("/")
    @Cacheable(value="produtosHome")
    public ModelAndView index(){
        List<Produto> produtos = produtoDao.listar();
        ModelAndView modelAndView = new ModelAndView("home");
        modelAndView.addObject("produtos", produtos);
        return modelAndView;
    }
}

HomeController.class da pasta do tomcat

@Controller
public class HomeController
{
  @Autowired
  ProdutoDAO produtoDAO;

  @RequestMapping({"/"})
  public ModelAndView index()
  {
    List<Produto> produtos = this.produtoDAO.listar();
    ModelAndView modelAndView = new ModelAndView("home");
    modelAndView.addObject("produtos", produtos);

    return modelAndView;
  }
}

Quando eu coloquei para fazer uma lista com produtos do banco ele também fez isso, consegui forçar ele voltar ao normal. Mas nesse passo esta dando o mesmo problema.

Eu já fiz: 
apaguei todo tomcat; 
clean; 
clean tomcat work directory;
apaguei o .class;
apaguei a casadocodigo do tomcat;
criei um novo projeto;

Quando dou start ele sempre cria esse homecontroller antigo. O que eu posso fazer para resolver isso?


Descobri que se eu der "Build Project" e "clean" no tomcat ele atualiza as class do tomcat, mas se eu apago a pasta do projeto do tomcat e dou start, é criada uma nova pasta sem a atualização do codigo. É questão de alguma configuração?

2 respostas

Tenta apagar a pasta Catalina que está dentro da pasta work do tomcat, nessa pasta o tomcat armazena alguns chaches que podem estar causando esse problema.

solução!

Eu já apaguei toda pasta do tomcat e criei um novo server com ela e já criei um novo projeto e copiei os arquivos para dentro.

Depois da sua resposta eu fiz novamente todo o processo de apagar o tomcat. Dessa vez quando fui adicionar o projeto ao tomcat(na criação do tomcat) ele me disse: "project facet dynamic web module version 3.1 is not supported", como a maioria das respostas que eu achei pesquisando era sobre colocar o projeto para 1.7(na época da resposta era recente lançado), resolvi colocar o tomcat 8 (as aulas usa o 7)

Criei o server tomcat 8, mudei a configuração para usar a instalação do tomcat, cliquei em iniciar o servidor. Mesmo problema. Tive que dar o BUILD PROJECT no projeto das aulas, clean e clean tomcat(no tomcat) e só então iniciar o servidor.

Fiz um teste, fui na pasta do tomcat:

%USERPROFILE%\workspace\apache-tomcat-8.0.44\wtpwebapps\casadocodigo\WEB-INF\classes\br\com\casadocodigo\loja\controllers

apaguei o HomeController.class Dou stop e start no server recebo o erro:


GRAVE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy
    at sun.reflect.annotation.AnnotationParser.parseClassArray(Unknown Source)
    at sun.reflect.annotation.AnnotationParser.parseArray(Unknown Source)
    at sun.reflect.annotation.AnnotationParser.parseMemberValue(Unknown Source)
    at sun.reflect.annotation.AnnotationParser.parseAnnotation2(Unknown Source)
    at sun.reflect.annotation.AnnotationParser.parseAnnotations2(Unknown Source)
    at sun.reflect.annotation.AnnotationParser.parseAnnotations(Unknown Source)
    at java.lang.Class.createAnnotationData(Unknown Source)

    ...

Ele não busca o HomeController do meu projeto para substituir o que está ausente. Ou eu dou ctrl+Z ou faço o Build Project (etc) para criar um novo HomeController.


Algo que lembrei agora. Se eu altero algum .jsp a alteração é feita quando eu salvo o arquivo.


Tem que marcar a opção do eclipse:

Project > Build Automatically.