RestEasy + Jackson = java.lang.NoClassDefFoundError: org/codehaus/jackson/map/JsonMappingException$Reference
lucianoborges Jan 18, 2013 2:45 PMI'm developing an aplication where a I take a route from google maps, save it on postgresql/postgis and i'd like to take this route (LineString geometry) and send back to the GoogleMaps.
I already got save the map on database, now I want to show the routes on map.
On the client side I'm using JQuery (AJAX) + Google Maps Api.
On the server side I'm using REST services with RestEasy.
I trie to work with Jackson to transform the Entity to JSON, but, the Jackson fails to transform geometric data in json. I think!
Someone know how to transform this spatial data to JSON?
My enviroment: JBossAS7.1 / PostgreSQL 8.4 + Postgis
My Entity:
public class Rota {
...
private LineString caminho;public Rota() {
}public Rota(Integer id, Usuario usuario, String descricao, LineString lineString) {
this.id = id;
this.usuario = usuario;
this.descricao = descricao;
this.caminho = lineString;
}// getters and setters
@Type(type = "org.hibernate.spatial.GeometryType")
public LineString getCaminho() {
return caminho;
}public void setCaminho(LineString caminho) {
this.caminho = caminho;
}// hashcode and equals method
}
My REST service:
@Inject
private RotaBC rotaBC;
@GET
@Path("/rotas/{idrota}")
@Produces("application/json")
public Rota show(@PathParam("id") String id) {
return rotaBC.show(Integer.parseInt(id));
}
The error:
15:05:16,447 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/sharecar].[default]] (http--0.0.0.0-8080-1) Servlet.service() for servlet default threw exception: java.lang.ClassNotFoundException: org.codehaus.jackson.map.JsonMappingException$Reference from [Module "org.codehaus.jackson.jackson-mapper-asl:main" from local module loader @1d332b (roots: /opt/demoiselle/server/jboss-7.1/modules)]
...
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)
at org.codehaus.jackson.map.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:166)
...
at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:446) at org.codehaus.jackson.map.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:150) at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:112)
My POM.xml
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-spatial</artifactId>
<version>4.0-M1</version>
</dependency>
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>8.4-701.jdbc3</version>
</dependency>
<dependency>
<groupId>org.postgis</groupId>
<artifactId>postgis-jdbc</artifactId>
<version>1.3.3</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.spec.javax.ws.rs</groupId>
<artifactId>jboss-jaxrs-api_1.1_spec</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jackson-provider</artifactId>
<scope>provided</scope>
</dependency>
I already tried update the Jackson, adding:
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.11</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.11</version>
</dependency>
But did not work.
How to fix it?