java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.AnnotationIntrospector.findPropertyDesc

20,528 views
Skip to first unread message

Sudhakar Betha

unread,
Mar 2, 2016, 5:42:31 PM3/2/16
to Swagger
I have an existing Rest API to which when I add swagger Annotation, the swagger.json generated throws error 

javax.servlet.ServletException: org.glassfish.jersey.server.ContainerException: java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.AnnotationIntrospector.findPropertyDescription(Lcom/fasterxml/jackson/databind/introspect/Annotated;)Ljava/lang/String;
	org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:485)
	org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:386)
	org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:334)
	org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:221)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)


I am using tomcat and I have jersey2 with jackson 2.7.2 

My pom.xml is 

<dependency>
   <groupId>com.fasterxml.jackson.jaxrs</groupId>
   <artifactId>jackson-jaxrs-json-provider</artifactId>
   <version>2.7.2</version>
</dependency>

<dependency>
   <groupId>com.fasterxml.jackson.core</groupId>
   <artifactId>jackson-core</artifactId>
   <version>2.7.2</version>
</dependency>
<dependency>
   <groupId>com.fasterxml.jackson.core</groupId>
   <artifactId>jackson-databind</artifactId>
   <version>2.7.2</version>
</dependency>
<dependency>
   <groupId>com.fasterxml.jackson.core</groupId>
   <artifactId>jackson-annotations</artifactId>
   <version>2.7.2</version>
</dependency>

My web.xml is

<servlet>
    <servlet-name>Jersey Web Application</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>io.swagger.jaxrs.listing,org.sudhakar,com.oracle.cloud9.sdi,com.jersey.jaxb,com.fasterxml.jackson.jaxrs,com.fasterxml.jackson.databind</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet>
    <servlet-name>Jersey2Config</servlet-name>
    <servlet-class>io.swagger.jersey.config.JerseyJaxrsConfig</servlet-class>
    <init-param>
        <param-name>api.version</param-name>
        <param-value>1.0.0</param-value>
    </init-param>
    <init-param>
        <param-name>swagger.api.basepath</param-name>
        <param-value>http://localhost:8080/cloud</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Jersey Web Application</servlet-name>
    <url-pattern>/api/*</url-pattern>
</servlet-mapping>

My Api is 


@Path("hello")
@Api(value="Hello", description="Interacting with Hello resource")
public class HelloResource{

@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public String getVersion() throws RemoteException {
.....
return version;
}


Why is it that Jersey2 with Jackson 2.7.2 still throws
java.lang.NoSuchMethodError for 
com.fasterxml.jackson.databind.AnnotationIntrospector.findPropertyDescription
I see the doc and its available 2.3 

Can someone please help ?

Thanks,
Sudhakar

Sudhakar Betha

unread,
Mar 3, 2016, 6:31:27 AM3/3/16
to Swagger
I was able to resolve this. Looks like someother version of jackson is being loaded.
So I deleted the maven repository for jackson jars and it re-imported again this time.

So was able to loan swagger.json correctly this time.

Thanks,
Sudhakar

AKHIL S K

unread,
Sep 14, 2017, 2:51:38 AM9/14/17
to Swagger
I got the same exception but for a different method in the same class, ...AnnotatedMember.annotations()
maven dependency for  jackson-databind version 2.9.0.pr3 - changed to 2.9.1 .Issue resolved
Reply all
Reply to author
Forward
0 new messages