【发布时间】:2019-04-22 18:12:30
【问题描述】:
我最近从 Java 8 迁移到 Java 11。
为jax.ws
我必须将以下外部依赖项添加到我的pom.xml,因为它在 Java 11 中不再可用。但是,我遇到了一些论点,即不应使用 com.sun.* 包类,并且应尽可能避免使用。那么是sun.* 还是com.sun.*?如果后者也是如此,那么最好的替代品是什么?
还有一点,我的代码没有直接使用此依赖项,而是由我的其他依赖项之一引用。
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-rt</artifactId>
<version>2.2.10</version>
</dependency>
【问题讨论】:
-
“
sun.*软件包注释”仅明确适用于sun.*。com.sun.*中的许多类被明确记录为 API 的一部分,例如 JNDI 提供程序、HTTP 服务器,以及过去的 JSSE。不幸的是,一些 IDE 作者似乎没有意识到这一点,并导致他们的产品发出错误的警告。 -
然而,并不是所有的 com.sun.* 包都暴露了。其中许多(如 com.sun.jmx.*)纯粹是内部的,不应使用。在 java 11 中,事情比以前清晰得多,因为这些内部 API 现在已被模块系统封装。如果 com.sun.* 包是可以使用的公共 API,它将被定义它的模块无条件地导出。
标签: java dependencies java-9 java-11