提问者:小点点

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


我正在使用jersey client进行Rest调用。我的代码的导入是:

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的课程实际上是不好的做法吗?

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


共2个答案

匿名用户

最好迁移到JAX-RS2.0客户端类。不过,一些重构是必要的。请参阅迁移指南。例如,如果您以前这样写:

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);

匿名用户

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

尽量避免使用此类API,始终首选公共文档化和指定的类。

引用-使用Sun专有的Java类是不好的做法?