Minha aplicação não consegue fazer o upload do arquivo no servidor.
Segue as classes implementadas no curso: https://gist.github.com/jonathanmdr/5439e06f9612235d5229932941715770
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Minha aplicação não consegue fazer o upload do arquivo no servidor.
Segue as classes implementadas no curso: https://gist.github.com/jonathanmdr/5439e06f9612235d5229932941715770
O eclipse está tentando salvar os arquivos na pasta temporária (padrão do plugin wtp). O que pode estar dando problema.
Tente fazer assim, configure para que o eclipse gerencie o servidor instalado direto na pasta de instalação do tomcat na sua máquina. Vá na aba servers, dê dois cliques no servidor e verifique a opção Server Locations, selecione a opção Use Tomcat Instalation (takes controll of tomcat instalation). Agora o eclipse ao invés de salva na pasta temporária interna, salva direto na pasta de instalação do tomcat. Pode ajudar.
Importante: Caso já tenha instalado e rodado a app no servidor a opção estará indisponível. Nesse caso remova a app do servidor e o próprio servidor. Reinstale o servidor, de dois cliques configure a opção pra tomar o controle da pasta de instalação e depois adicione a app e rode.
Estou utilizando como IDE o IntelliJ, e o mesmo tem propriedades de configurações diferentes do Eclipse, até o momento não consegui solucionar, tem alguma ideia de como proceder ?
Ao tentar cadastrar um produto, ele tenta localizar a imagem em um path que ela não existe, ao invés de fazer o upload.
Segue o log do erro:
HTTP Status 500 – Internal Server Error
Type Exception Report
Message Request processing failed; nested exception is java.lang.RuntimeException: java.io.IOException: java.io.FileNotFoundException: C:\Developer Tools\apache-tomcat-8.0.53\webapps\casadocodigo\arquivos-sumario\debug.png (O sistema não pode encontrar o caminho especificado)
Description The server encountered an unexpected condition that prevented it from fulfilling the request.
Exception
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.RuntimeException: java.io.IOException: java.io.FileNotFoundException: C:\Developer Tools\apache-tomcat-8.0.53\webapps\casadocodigo\arquivos-sumario\debug.png (O sistema não pode encontrar o caminho especificado)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:973)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863)
javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Root Cause
java.lang.RuntimeException: java.io.IOException: java.io.FileNotFoundException: C:\Developer Tools\apache-tomcat-8.0.53\webapps\casadocodigo\arquivos-sumario\debug.png (O sistema não pode encontrar o caminho especificado)
br.com.casadocodigo.loja.infra.FileSaver.write(FileSaver.java:26)
br.com.casadocodigo.loja.controllers.ProdutosController.gravar(ProdutosController.java:52)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215)
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:781)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:721)
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863)
javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Por desencargo, tenta no Eclipse com as modificações que falei. Se der certo vamos tentar replicar as modificações para a sua IDE de preferência.
Tentei executar o projeto com o Eclipse IDE com as configurações que me informou, mas foi sem sucesso! Com o Eclipse as páginas .jsp de listagem de produtos e formulário de cadastro nem abrem no navegador, a IDE acusa alguns erros nas classes, porém os erros são inexistentes.
Oi Bruno,
aquele caminho que aparece na mensagem da exceção realmente existe e está correto?
C:\Developer Tools\apache-tomcat-8.0.53\webapps\casadocodigo\arquivos-sumario\Tbm evite espaços no nome da pasta.
abs
Olá Nico!
Sim, o caminho existe!
O problema que eu acredito estar ocorrendo é: O Spring deveria salvar o arquivo cujo estou fazendo upload, justamente neste caminho que aparece na Exception, porém parece que ele tenta procurar o arquivo neste caminho onde ele deveria salvá-lo.
Oi Bruno,
confesso que ainda nao sei qual é o problema, mas o que te levou a essa conclusão?
E só para garantir, segue abaixo tem uma duvida parecida de um outro aluno:
https://cursos.alura.com.br/forum/topico-o-sistema-nao-pode-encontrar-o-caminho-especificado-40676
abs
Oi Nico!
Consegui solucionar o problema, ocorria que ao iniciar o servidor da aplicação, por algum motivo que não consegui descobrir, ele excluía o diretório "arquivos-sumario" em tempo de execução, o que fazia com que o erro ocorresse sempre que a aplicação tentava chegar ao diretório, o que faz total sentido.
A solução foi: Deletei o servidor tomcat e refiz a instalação do mesmo, logo após fiz um rebuild na aplicação e em seguida fiz o deploy da aplicação no novo servidor.