[Resolvido] Dúvida GSON

Galera boa tarde!

Estou seguindo um tutorial onde explica como faço para comunicar um webservice desenvolvido através do Jersey com o Android.
Meu Webservice já está funcionando tudo certinho e minha aplicação Web também, o problema está sendo justamente na hora de obter as informações do Webservice na aplicação android.

Segundo o tutorial o Jersey não se entende com o GSON e é preciso tratar isso para não gerar um problema na aplicação Android.
No exemplo o camarada fez a seguinte codificação:

@GET @Path("/buscarTodosGSON") @Produces("application/json") public String selTodosGSON(){ return new Gson().toJson(Banco.getBancoInstance().getListaClientes()); }

Já na minha aplicação eu fiz a publicação dos métodos das classes FACADE, sendo assim a minha codificação ficou da seguinte forma:

@GET @Path("/listarTodosAndroid") @Produces("application/json") public String listarTodosAndroid() { grupoProdutoDAO.beginTransaction(); ArrayList<GrupoProduto> grupoProduto = (ArrayList<GrupoProduto>) grupoProdutoDAO.findAll(); grupoProdutoDAO.closeTransaction(); return new Gson().toJson(grupoProduto); }

Beleza, consegui salvar e mandei compilar a aplicação. Porém quando tento acessar o endereço do WS tenho o seguinte erro:

[code]type Exception report

message java.lang.NoClassDefFoundError: com/google/gson/Gson

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

exception

javax.servlet.ServletException: java.lang.NoClassDefFoundError: com/google/gson/Gson
com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:420)
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538)
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
root cause

java.lang.NoClassDefFoundError: com/google/gson/Gson
br.com.unip.menudroidweb.facade.GrupoProdutoFacade.listarTodosAndroid(GrupoProdutoFacade.java:63)
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)
com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185)
com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)
com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1480)
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1411)
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1360)
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1350)
com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538)
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
root cause

java.lang.ClassNotFoundException: com.google.gson.Gson
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
br.com.unip.menudroidweb.facade.GrupoProdutoFacade.listarTodosAndroid(GrupoProdutoFacade.java:63)
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)
com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185)
com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)
com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1480)
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1411)
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1360)
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1350)
com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538)
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.30 logs.[/code]

Caso seja necessário, vou anexar também a codificação da classe GrupoProdutoFacade

GrupoProdutoFacade

[code]package br.com.unip.menudroidweb.facade;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.ws.rs.GET;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;

import com.google.gson.Gson;

import br.com.unip.menudroidweb.dao.GrupoProdutoDAO;
import br.com.unip.menudroidweb.model.GrupoProduto;

@Path("/grupoproduto")
public class GrupoProdutoFacade implements Serializable {
private static final long serialVersionUID = -7914066672489151023L;
private GrupoProdutoDAO grupoProdutoDAO = new GrupoProdutoDAO();

@PUT
@Produces("application/json")
public void createGrupoProduto(GrupoProduto grupoProduto) {
	grupoProdutoDAO.beginTransaction();
	grupoProdutoDAO.save(grupoProduto);
	grupoProdutoDAO.commitAndCloseTransaction();
}

public void updateGrupoProduto(GrupoProduto grupoProduto) {
	grupoProdutoDAO.beginTransaction();
	GrupoProduto persistedGrupoProduto = grupoProdutoDAO.find(grupoProduto.getIdGrupoProduto());
	persistedGrupoProduto.setDescricao(grupoProduto.getDescricao());
	grupoProdutoDAO.update(persistedGrupoProduto);
	grupoProdutoDAO.commitAndCloseTransaction();
}

@Path("{id}")
@GET
@Produces("application/json")
public GrupoProduto findGrupoProduto(@PathParam("id") int grupoProdutoId) {
	grupoProdutoDAO.beginTransaction();
	GrupoProduto grupoProduto = grupoProdutoDAO.find(grupoProdutoId);
	grupoProdutoDAO.closeTransaction();
	return grupoProduto;
}

public List<GrupoProduto> listAll() {
	grupoProdutoDAO.beginTransaction();
	List<GrupoProduto> grupoProduto = grupoProdutoDAO.findAll();
	grupoProdutoDAO.closeTransaction();
	return grupoProduto;
}

@GET
@Path("/listarTodosAndroid")
@Produces("application/json")
public String listarTodosAndroid() {
	grupoProdutoDAO.beginTransaction();
	ArrayList<GrupoProduto> grupoProduto = (ArrayList<GrupoProduto>) grupoProdutoDAO.findAll();
	grupoProdutoDAO.closeTransaction();
	return new Gson().toJson(grupoProduto);
}

public void deleteGrupoProduto(GrupoProduto grupoProduto) {
	grupoProdutoDAO.beginTransaction();
	GrupoProduto persistedGrupoProduto = grupoProdutoDAO.findReferenceOnly(grupoProduto.getIdGrupoProduto());
	grupoProdutoDAO.delete(persistedGrupoProduto);
	grupoProdutoDAO.commitAndCloseTransaction();
}

}
[/code]

Alguém saberia me dizer o que estou fazendo de errado??

Galera, encontrei o erro aqui.

Foi marcação minha, fiz o build path das lib e esqueci de colocar elas na pasta lib.
:oops:

Agora deu tudo certo.