3
respostas

(No such file or directory)

O Erro:

Request processing failed; nested exception is java.lang.RuntimeException: java.io.FileNotFoundException: /home/paulo/Documents/workspace/casadocodigo/target/tmp/home/paulo/Documents/workspace/casadocodigo/src/main/webapp/arquivos-sumario/DUDA_MALU.png (No such file or directory)

Parece que esta duplicando o caminho e ainda aparece uma pasta chamada "target" que não sei o que é.

O método write() esta assim:

String realPath = request.getServletContext().getRealPath("/"+baseFolder);
String path = realPath + "/" + file.getOriginalFilename();

file.transferTo(new File(path));
return path;

Minha máquina é Linux, e estou usando o Jetty como container.

Alguém tem alguma luz?

3 respostas

O que é o baseFolder?

E porque getRealPath()?

Oi Felipe,

"baseFolder" é o parâmetro da class FileSaver que contem o nome da pasta que o Controller determinou.

E getRealPath() é para pegar o caminho completo da "baseFolder" no caso a pasta que foi passada como parâmetro.

Coloquei apenas esta parte do código, pois penso que o problema esta relacionado ao path no Linux, pois se reparar esta duplicando o caminho do path e também esta mostrando uma pasta chamada "target" que não existe no path da baseFolder.

O Certo é: /home/paulo/Documents/workspace/casadocodigo/src/main/webapp/arquivos-sumario/

Na verdade, esse path com "target" está correto, porque é está a execução do projeto.

Essa pasta target é criado pelo maven/graddle, faz parte da estrutura do projeto. Nessa pasta ficam os arquivos compilados ou necessário para a execução.

A solução simples é utilizar um local como "/tmp/arquivos" ou caso preciso acessar exatamente arquivos do projeto, utilize algo como "java.lang.ClassLoader.getResource()"