Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

"Could not find a suitable constructor" when extracted interface from my resource class with Jersey 2

How can I make Jersey understand that it should use a concrete class instead of the interface for a resource?

I had a working app with a Status resource. Then I extracted an interface IStatus, and moved all JAX-RS annotations there. Now, I get:

org.glassfish.hk2.api.MultiException A MultiException has 1 exceptions.  They are:1. java.lang.NoSuchMethodException: Could not find a suitable constructor in resource.IStatus class

I know that this works with RestEasy. Is there any way of making it work with Jersey?

like image 628
user384729 Avatar asked Feb 12 '16 12:02

user384729


2 Answers

Put the class level @Path on the implementation instead of the interface. Jersey is trying to instantiate the interface, which it can't.

like image 107
Paul Samsotha Avatar answered Nov 14 '22 15:11

Paul Samsotha


To whoever reaches this thread and the above wasn't the issue, in my scenario it was this:

Please pay special attention to constructors annotated with @Inject. It is a common mistake to import com.google.Inject instead of javax.inject.Inject.

From here: https://github.com/eclipse-ee4j/jersey/issues/2390

That solved the issue!

like image 7
Robocide Avatar answered Nov 14 '22 15:11

Robocide