来自“com.sun。*”和“sun。*”包的类不应该用于Jersey客户端的Sonar问题

时间:2015-09-22 10:31:53

标签: java jersey sonarqube

我正在使用jersey client进行休息通话。我的代码的导入是:

import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.WebResource;

一切都很好。我正在使用Sonar来检查我的代码质量。

声纳显示出一个主要问题:

  

不应使用“com.sun。”和“sun。”包中的类

使用sun中的类这实际上是不好的做法吗?

如果是,有哪些替代方案?

2 个答案:

答案 0 :(得分:5)

迁移到JAX-RS 2.0客户端类更好。但是有些重构是必要的。请参阅migration guide。例如,如果您之前这样写过:

Client client = Client.create();
WebResource webResource = client.resource(restURL).path("myresource/{param}");
String result = webResource.pathParam("param", "value").get(String.class);

你现在应该这样写:

Client client = ClientFactory.newClient();
WebTarget target = client.target(restURL).path("myresource/{param}");
String result = target.pathParam("param", "value").get(String.class);

答案 1 :(得分:0)

因为它们是内部API:它们可能以未记录或不受支持的方式进行更改,并且它们绑定到特定的JRE / JDK(在您的情况下为Sun),从而限制了程序的可移植性。

尽量避免使用此类API,总是更喜欢公开记录和指定的类。

参考 - It is a bad practice to use Sun's proprietary Java classes?