Erro Upload de imagens

8 respostas
tompereira

Alguem pode me ajudar por que está dando nullpointerexception? , já pesquise em outros topicos já tente achar o erro mas não encontro … :cry:
segue o erro e as classes abaixo :

type Exception report

message 

description The server encountered an internal error () that prevented it from fulfilling this request.

exception 

br.com.caelum.vraptor.InterceptionException: exception raised, check root cause for details: java.lang.NullPointerException
	br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:86)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
	br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:69)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
	br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
	br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:90)
	br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
	br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:42)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
	br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:44)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
	br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:81)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
	br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
	br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
	br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
	br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
	br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)


root cause 

java.lang.NullPointerException
	br.com.AromaNaWeb.imagens.Imagens.salva(Imagens.java:27)
	br.com.AromaNaWeb.controller.ImagensController.upload(ImagensController.java:38)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	java.lang.reflect.Method.invoke(Unknown Source)
	br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:57)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
	br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:69)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
	br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
	br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:90)
	br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
	br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:42)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
	br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:44)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
	br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:81)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
	br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53)
	br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
	br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
	br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
	br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)


note The full stack trace of the root cause is available in the Apache Tomcat/6.0.29 logs.

classe imagenscontroller

package br.com.AromaNaWeb.controller;

import java.io.File;

import br.com.AromaNaWeb.imagens.Imagens;
import br.com.AromaNaWeb.modelo.Produto;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.Validator;
import br.com.caelum.vraptor.interceptor.multipart.UploadedFile;
import br.com.caelum.vraptor.validator.Validations;
import br.com.caelum.vraptor.*;
import static org.hamcrest.Matchers.*;  
import static br.com.caelum.vraptor.view.Results.*;
@Resource
public class ImagensController {
	
private Validator validator;
private Imagens imagens;
private Result result;
private String pastaImagens;

public ImagensController(Validator validator, Imagens imagens, Result result) {
this.validator = validator;
this.imagens = imagens;
this.result = result;
		}
@Post @Path("/produtos/{produto.id}/imagem")
public void upload(Produto produto, UploadedFile imagem,Validator validator) {
	//validator.checking(new Validations() {{
	//	if (that(imagem, is(notNullValue()), "imagem", "imagem.nula")) {
		//that(imagem.getContentType(), startsWith("image"), "imagem", "nao.eh.imagem");
		//}
		//}});
		//validator.onErrorUse(logic()).redirectTo(ProdutosController.class).edita(produto.getId());
		imagens.salva(imagem, produto);
		result.redirectTo(ProdutosController.class).edita(produto.getId());
		}
public File download(Produto produto) {
	return imagens.mostra(produto);
	}
public File mostra(Produto produto) {
	return new File(pastaImagens, produto.getId() + ".imagem");
}
	
}

e classe imagens

package br.com.AromaNaWeb.imagens;


import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import javax.servlet.ServletContext;

import br.com.AromaNaWeb.modelo.Produto;
import br.com.caelum.vraptor.interceptor.multipart.UploadedFile;
import br.com.caelum.vraptor.ioc.Component;
import org.apache.commons.io.IOUtils;

@Component
public class Imagens {
private File pastaImagens;
public Imagens(ServletContext context) {
String caminhoImagens = context.getRealPath("/WebContent/imagens");
pastaImagens = new File(caminhoImagens);
pastaImagens.mkdir();

}
public void salva(UploadedFile imagem, Produto produto) {
	File destino = new File(pastaImagens, produto.getId() + ".imagem");
	try {
	IOUtils.copyLarge(imagem.getFile(), new FileOutputStream(destino));
	} catch (IOException e) {
	throw new RuntimeException("Erro ao copiar imagem", e);
	}
	}
public File mostra(Produto produto) {
	return new File(pastaImagens, produto.getId() + ".imagem");
}
}

se alguem puder me ajudar .

8 Respostas

davidbuzatto

Você está tentando chamar um método em um uma referência (imagens) que está apontando para null.
Está faltando passar um objeto válido para o construtor. O valor passado está null.

[]´s

tompereira

tentei fazer assim mais não deu certo

imagens = new imagem() ;
davidbuzatto

Rapaz… Se vc não sabe nem o que está fazendo, então fica complicado te ajudar…
Vc não sabe de onde vem a tal da imagem?

tompereira

sim estou tentando passar do metodo upload de imagenscontroller para o metodo salvar da classe imagens e todos os parametros estão ai só que dá a exceção nullpointer exception … que não sei de onde vem …

tompereira

estou seguinte a apostila da caelum na parte de download e upload de imagens e estou perdido …

davidbuzatto

Vc deve ter perdido algum detalhe na leitura da apostila. Tente reler todo o capítulo que você está trabalhando para ver se encontra o problema :wink:

[]´s

tompereira

blz vou tentar então , mas a parte de restful tambem foi a mesma coisa fiz tres vezes copiei todo codigo na primeira e não deu certo , na segunda e terceira digitei toda aquela parte para verificar se não deixava passar nada , mas estava igual da apostila mesmo assim dava erro .

tompereira

se alguem mais puder me ajudar refiz os passos da apostila e continua dando o mesmo erro acima .

Criado 5 de novembro de 2010
Ultima resposta 6 de nov. de 2010
Respostas 8
Participantes 2