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

HTTP Status 500 - Request processing failed; nested exception is java.lang.RuntimeException: java.io.IOException: java.io.FileNotFoundException

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

8 respostas

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

solução!

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.