我正在尝试运行一个球衣客户端并面临这个问题。
WS级:
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
@Path("/hello")
public class HelloWorldService {
@GET
@Path("/vip")
@Produces(MediaType.APPLICATION_JSON)
public Response getMsg(@QueryParam("msg") String msg) {
String output = "Jersey say : " + msg;
return Response.status(200).entity(output).build();
}
}
客户类别:
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.WebResource;
public class JerseyClientGet {
public static void main(String[] args) {
try {
Client client = Client.create();
WebResource webResource = client
.resource("http://localhost:8080/TestRest/rest/hello/vip?msg=ABCD");
ClientResponse response = webResource.accept("application/json")
.get(ClientResponse.class);
if (response.getStatus() != 200) {
throw new RuntimeException("Failed : HTTP error code : "
+ response.getStatus());
}
String output = response.getEntity(String.class);
System.out.println("Output from Server .... \n");
System.out.println(output);
} catch (Exception e) {
e.printStackTrace();
}
}
}
问题是当我尝试执行客户端类时,出现以下错误消息
Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class com.sun.jersey.core.header.MediaTypes
at com.sun.jersey.core.spi.factory.MessageBodyFactory.initReaders(MessageBodyFactory.java:182)
at com.sun.jersey.core.spi.factory.MessageBodyFactory.initReaders(MessageBodyFactory.java:176)
at com.sun.jersey.core.spi.factory.MessageBodyFactory.init(MessageBodyFactory.java:162)
at com.sun.jersey.api.client.Client.init(Client.java:342)
at com.sun.jersey.api.client.Client.access$000(Client.java:118)
at com.sun.jersey.api.client.Client$1.f(Client.java:191)
at com.sun.jersey.api.client.Client$1.f(Client.java:187)
at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:193)
at com.sun.jersey.api.client.Client.<init>(Client.java:187)
at com.sun.jersey.api.client.Client.<init>(Client.java:159)
at com.sun.jersey.api.client.Client.create(Client.java:669)
at com.mkyong.client.JerseyClientGet.main(JerseyClientGet.java:12)
我正在使用以下罐子:
asm-3.1.jar,
杰克逊核心-asl-1.9.2.jar,
杰克逊-jaxrs-1.9.2.jar,
杰克逊-mapper-asl-1.9.2.jar,
杰克逊-xc-1.9.2.jar,
球衣捆绑-1.8.jar,
球衣客户端-1.18.jar,
泽西核心-1.18.jar,
泽西-json-1.18.jar,
球衣服务器-1.18.jar,
泽西-servlet-1.18.jar,
jettison-1.1.jar,
jsr311-api-1.1.1.jar
通常,当您的代码针对 jersey-bundle-1.8.jar 和 jsr311-api-0.9.jar 进行编译时,您会遇到此问题。但在这里我可以看到你正在使用jsr311-api-1.1.1.jar
。那么下一个问题将是应用程序/Web 服务器加载较旧的 jar 文件。例如:GlassFish 3.1 附带 Jersy 1.5(它可能优先于您的库)。
理想情况下,您需要检查服务器中是否加载了 JSR-311 库的版本(0.9 版本的 jsr311-api jar 已过时)。
您应该针对 jersey-bundle-1.8.jar 进行编译,并使用 jersey-bundle-1.8.jar 和 jsr311-api-1.1.1.jar 运行
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)