Java 来自「;com.sun.*“;及;太阳报;软件包不应用于泽西岛客户的声纳问题

Java 来自「;com.sun.*“;及;太阳报;软件包不应用于泽西岛客户的声纳问题,java,jersey,sonarqube,Java,Jersey,Sonarqube,我正在使用jersey客户端进行rest调用。我的代码的导入为: import com.sun.jersey.api.client.Client; import com.sun.jersey.api.client.ClientResponse; import com.sun.jersey.api.client.WebResource; 一切正常。我正在使用声纳检查代码质量 声纳显示了以下主要问题: 不应使用“com.sun.”和“sun.”包中的类 使用sun的类实际上是一种不好的做法吗 如果

我正在使用
jersey客户端
进行rest调用。我的代码的导入为:

import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.WebResource;
一切正常。我正在使用
声纳
检查代码质量

声纳显示了以下主要问题:

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

使用sun的类实际上是一种不好的做法吗


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

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

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


参考-

最好迁移到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);

有关
com.sun
类的警告不正确。其中有很多,它们是API的文档部分。例如,JNDI就充满了它们。必须避免的是
sun.
类。泽西图书馆的类不是内部类。请详细说明您的意见?我读过com.sun.*的文章,里面描述了above@FGI这个问题主要是关于sun.*。大多数(如果不是全部的话)关于
com.sun.*
在问答页面中是私有的论点缺乏可靠的引用。