I'm writing unit test for my rest call (implemented in jersey) with the
jersey test framework, I'm getting an IncompatibleClassChangeError, and it's
really confusing:
Caused by: java.lang.IncompatibleClassChangeError: Class
javax.ws.rs.core.Response$Status does not implement the requested interface
javax.ws.rs.core.Response$StatusType
at
com.sun.jersey.spi.container.ContainerResponse.getStatus(ContainerResponse.java:548)
at
com.sun.jersey.spi.container.ContainerResponse$CommittingOutputStream.commitWrite(ContainerResponse.java:156)
at
com.sun.jersey.spi.container.ContainerResponse$CommittingOutputStream.write(ContainerResponse.java:133)
at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:202)
at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:272)
at sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:276)
at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:122)
at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:212)
at java.io.BufferedWriter.flush(BufferedWriter.java:236)
at
com.sun.jersey.core.util.ReaderWriter.writeToAsString(ReaderWriter.java:191)
at
com.sun.jersey.core.provider.AbstractMessageReaderWriterProvider.writeToAsString(AbstractMessageReaderWriterProvider.java:128)
at
com.sun.jersey.core.impl.provider.entity.StringProvider.writeTo(StringProvider.java:88)
at
com.sun.jersey.core.impl.provider.entity.StringProvider.writeTo(StringProvider.java:58)
at
com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:299)
at
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1326)
at
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1239)
at
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1229)
at
com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:420)
at
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:497)
at
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:684)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at
com.sun.grizzly.http.servlet.FilterChainImpl.doFilter(FilterChainImpl.java:188)
... 20 more
My rest call is like this:
@GET
@Produces("application/json")
@Path("/test")
public String test() {
return "it works";
}
My test is like this:
public class MyTest extends JerseyTest {
public MyTest() {
super("com.mypackage");
}
@Test
public void test() throws IllegalArgumentException, IOException {
WebResource webResource = resource();
webResource.path("/test").accept("application/json").get(ClientResponse.class).toString();
}
}
The 2nd line is throwing the exception. So what am I doing wrong here? I'm
using jersey 1.4 and also 1.4 for the jersey test framework. Any help would
be appreciated. Thanks!
--
View this message in context: http://jersey.576304.n2.nabble.com/unit-test-jersey-rest-call-with-jersey-test-framework-tp5847765p5847765.html
Sent from the Jersey mailing list archive at Nabble.com.