Pesquisando no forum eu importei a biblioteca hancrest e o erro sumiu
mais agora na hora de subir o glasfihs ele da o seguinte erro na biblioteca
INFO: Instantiated an instance of org.hibernate.validator.engine.resolver.JPATraversableResolver.
GRAVE: Exception while loading the app
org.glassfish.deployment.common.DeploymentException: java.lang.NoClassDefFoundError: org/hamcrest/Description
at org.glassfish.weld.WeldDeployer.event(WeldDeployer.java:167)
at org.glassfish.kernel.event.EventsImpl.send(EventsImpl.java:125)
at org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:224)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:338)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:183)
at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:272)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:305)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:320)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1176)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$900(CommandRunnerImpl.java:83)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1235)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1224)
at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:365)
at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:204)
at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:166)
at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:100)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:245)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
at java.lang.Thread.run(Thread.java:619)
Caused by: com.google.common.collect.ComputationException: java.lang.NoClassDefFoundError: org/hamcrest/Description
at com.google.common.collect.MapMaker$StrategyImpl.compute(MapMaker.java:602)
at com.google.common.collect.MapMaker$StrategyImpl.compute(MapMaker.java:462)
at com.google.common.collect.CustomConcurrentHashMap$ComputingImpl.get(CustomConcurrentHashMap.java:2045)
at org.jboss.weld.resources.ClassTransformer.loadClass(ClassTransformer.java:164)
at org.jboss.weld.bootstrap.BeanDeployer.addClass(BeanDeployer.java:61)
at org.jboss.weld.bootstrap.BeanDeployer.addClasses(BeanDeployer.java:88)
at org.jboss.weld.bootstrap.BeanDeployment.deployBeans(BeanDeployment.java:134)
at org.jboss.weld.bootstrap.WeldBootstrap.deployBeans(WeldBootstrap.java:377)
at org.glassfish.weld.WeldDeployer.event(WeldDeployer.java:165)
... 30 more
Caused by: java.lang.NoClassDefFoundError: org/hamcrest/Description
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
at java.lang.Class.getConstructor0(Class.java:2699)
at java.lang.Class.getDeclaredConstructor(Class.java:1985)
at org.jboss.weld.util.reflection.SecureReflections$10.work(SecureReflections.java:239)
at org.jboss.weld.util.reflection.SecureReflections$10.work(SecureReflections.java:235)
at org.jboss.weld.util.reflection.SecureReflectionAccess.run(SecureReflectionAccess.java:54)
at org.jboss.weld.util.reflection.SecureReflectionAccess.runAsMethodAccess(SecureReflectionAccess.java:119)
at org.jboss.weld.util.reflection.SecureReflections.getDeclaredConstructor(SecureReflections.java:234)
at org.jboss.weld.util.Proxies.isClassProxyable(Proxies.java:248)
at org.jboss.weld.util.Proxies.isTypeProxyable(Proxies.java:201)
at org.jboss.weld.util.Proxies.isTypesProxyable(Proxies.java:229)
at org.jboss.weld.introspector.jlr.AbstractWeldAnnotated.<init>(AbstractWeldAnnotated.java:179)
at org.jboss.weld.introspector.jlr.WeldClassImpl.<init>(WeldClassImpl.java:145)
at org.jboss.weld.introspector.jlr.WeldClassImpl.of(WeldClassImpl.java:140)
at org.jboss.weld.resources.ClassTransformer$TransformTypeToWeldClass.apply(ClassTransformer.java:50)
at org.jboss.weld.resources.ClassTransformer$TransformTypeToWeldClass.apply(ClassTransformer.java:38)
at com.google.common.collect.MapMaker$StrategyImpl.compute(MapMaker.java:592)
... 38 more
Caused by: java.lang.ClassNotFoundException: org.hamcrest.Description
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at org.glassfish.web.loader.WebappClassLoader.findClass(WebappClassLoader.java:959)
at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1430)
... 56 more
EU Nao consigo entender fechei e abri o netbenas e funcionou.
Mais eu ja tinha feito isso umas 4 vezes
Agora quando vou inserir a imagem da o sequinte erro.
br.com.caelum.vraptor.InterceptionException: exception raised, check root cause for details: java.util.MissingResourceException: Can’t find bundle for base name messages, locale pt_BR
[quote=Lucas Cavalcanti]precisa de um arquivo chamado messages.properties no classpath (estranho, não deveria precisar disso na última versão do vraptor)
vc pode criar esse arquivo na sua pasta src (ou src/main/resources)[/quote]
Desculpa a minha ignorancia mais o Vraptor foi vc quem criou?
hauahahuaa
Vc sabe tudo
Hahaha eu coloquei PUT e nao POST ai dava errado mesmo rss
Bom mais agora nao acontece nada quando coloco a imagem e clico em enviar, ele simplesmente me rotorna a pagina sem alterar nada.
vai ai os codigos
Classe imagens:
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package br.com.caelum.goodbuy.imagens;
import br.com.caelum.goodbuy.modelo.Produto;
import br.com.caelum.vraptor.interceptor.multipart.UploadedFile;
import br.com.caelum.vraptor.ioc.Component;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.servlet.ServletContext;
import org.apache.commons.io.IOUtils;
/**
*
* @author Fred
*/
@Component
public class Imagens {
private File pastaImagens;
public Imagens(ServletContext context) {
String caminhoImagens = context.getRealPath("/WEB-INF/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");
}
}
ImagensCOntroller
package br.com.caelum.goodbuy.controller;
import java.io.File;
import br.com.caelum.vraptor.Get;
import br.com.caelum.goodbuy.imagens.Imagens;
import br.com.caelum.goodbuy.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 static org.hamcrest.Matchers.*;
/**
*
* @author Fred
*/
@Resource
public class ImagensController {
private final Validator validator;
private final Imagens imagens;
private final Result result;
public ImagensController(Validator validator, Imagens imagens, Result result) {
this.validator = validator;
this.imagens = imagens;
this.result = result;
}
@Post @Path("/admin/{produto.id}/imagem")
public void upload(Produto produto, final UploadedFile imagem) {
validator.checking(new Validations() {{
if (that(imagem, is(notNullValue()), "imagem", "imagem.nula")) {
that(imagem.getContentType(), startsWith("image"), "imagem", "nao.eh.imagem");
}
}});
validator.onErrorRedirectTo(ProdutosController.class).edita(produto.getId());
imagens.salva(imagem, produto);
result.redirectTo(ProdutosController.class).edita(produto.getId());
}
@Get @Path("/admin/{produto.id}/imagem")
public File download(Produto produto) {
return imagens.mostra(produto);
}
}
Opa amigo, já passei por isso antes. (vou lhe falar uma coisa, mas nao tenho certeza), separa o upload da imagem do cadastro do produto. pois já fiz esse exercício da FJ28 e tive problemas com isso. o envio da imagem nao da certo com o cadastro. segundo um professor meu é por causa do protocolo HTTP. Na época que me ajudou fou o Lucas tb. o post é esse ai…http://www.guj.com.br/java/218906-upload-de-imagens-com-vraptor da uma olhada… qlqr coisa posta suas dúvidas novamente… vlw
[quote=well]Opa amigo, já passei por isso antes. (vou lhe falar uma coisa, mas nao tenho certeza), separa o upload da imagem do cadastro do produto. pois já fiz esse exercício da FJ28 e tive problemas com isso. o envio da imagem nao da certo com o cadastro. segundo um professor meu é por causa do protocolo HTTP. Na época que me ajudou fou o Lucas tb. o post é esse ai…http://www.guj.com.br/java/218906-upload-de-imagens-com-vraptor da uma olhada… qlqr coisa posta suas dúvidas novamente… vlw [/quote
well Eu sou muito cru com isso, vc tem ai uma dica ou tutorial para me ajudar?
vi no seu topico que vc fez ao adicionar o produto ele chama uma tela para por a imagem correto?
como fez isso?
Cara, fiz algo do tipo sim. mas agora de cabeça, baboo… vou lhe mandar um quebra galho…
@Post @Path("/produtos")
public void adiciona(Produto produto) {
dao.adiciona(produto);
result.redirectTo(ProdutosController.class).lista();
}
assim ele vai te redirecionar para o metodo lista certo…
ai vc define uma imagem default, do tipo NO IMAGEM,
e cria um link para alterar a imagem tipo isso.