JDK Cross Compilation使用哪个版本的JAX WS和JAXB?

时间:2015-05-28 19:58:05

标签: java maven jaxb jax-ws cross-compiling

我的机器上安装了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(对应JDK 8),如何确保它使用2.2.4(对应JDK 7)版本?

让我知道更多信息。

1 个答案:

答案 0 :(得分:1)

罐子的API

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

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

这实际上意味着这些jar提供的API已包含在JDK的API中。 (确切地说,API已添加到rt.jar) 在使API成为JDK API的一部分时,API的包名与它们在jar中的名称保持一致。

例如,假设WEB SERVICE项目不包含任何通过Maven的JAXWS jar。然后在任何课堂上写

  @WebMethod or 
  @WebService

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

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

假设您的packageExplorer与编辑器链接,执行ctrl +单击这些导入中的任何一个将导致将包浏览器视图转移到类文件的位置。这将在JDK的rt.jar中。

enter image description here

enter image description here

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

enter image description here

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

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

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

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