JDK 交叉编译使用哪个版本的 JAX WS 和 JAXB?

JDK Cross Compilation uses which version of JAX WS and JAXB?

我的机器上安装了 JDK 8。 我的代码的 POM 有一个 Maven 编译器插件,它使用源值 1.7 和目标值 1.8

我的代码中有 JAXWS 和 JAXB 依赖项。 JDK 8 与 2.2.9 版本的 JAXWS 和 JAXB 捆绑在一起。 JDK 7 与 2.2.4 版本相同的罐子

在使用Maven Install 进行交叉编译时,将使用哪个版本的JAXWS 或JAXB jar?如何找到 JAXWS 和 JAXB jar 的版本?

如果使用2.2.9(对应JDK8),如何保证使用2.2.4(对应JDK7)版本?

让我知道更多信息。

罐子API

JAXWS-API,
JAXWS-IMPL,
JAXB-API,
JAXB-IMPL 

已成为 JDK 的一部分 Java 的版本 6 及更高版本。

这实际上意味着这些 jar 提供的 API 已包含在 JDK 的 API 中。 (准确地说,API 已经添加到 rt.jar) 在制作 JDK 的 API 的 API 部分时,API 的包名称与它们在 jars 中的名称保持相同。

例如,假设一个 WEB SERVICE 项目不包含任何通过 Maven 的 JAXWS jar。然后在任何 class 中写

  @WebMethod or 
  @WebService

我们只需在 STS 或 Eclipse 中执行 ctrl+shift+o,然后导入将自动包含其完全合格的导入,如

 import javax.jws.WebService; or
 import javax.jws.WebMethod;

假设您的 packageExplorer 与编辑器链接,对这些导入中的任何一个执行 ctrl+click 将导致将包资源管理器视图移动到 Class 文件的位置。这将在 JDK.

的 rt.jar 内的某处

==== 另一方面,如果我们通过具有 COMPILE 作用域的 Maven 提供 JAXWS jar,并且重复上述相同步骤将导致包资源管理器视图显示 class 文件位于 JAXWS Jar 中,而不是 rt.jar 的 JDK。

+++++++++++++++++++

+++++++++++++++++++

+++++++++++++++++++

这表示如果 JAXWS jar 可作为依赖项使用,则不会使用基于 JDK 的 JAXWS API。