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

标签 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 版本的相同 jars

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

如果使用2.2.9(对应JDK 8),如何确保使用2.2.4(对应JDK 7)版本?

请告诉我更多信息。

最佳答案

jar 的 API

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

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

这实际上意味着这些 jar 提供的 API 已包含在 JDK 的 API 中。 (准确来说,rt.jar中已经添加了API) 在使 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+click 都会导致将包资源管理器 View 移动到类文件的位置。这将位于 JDK 的 rt.jar 中的某个位置。

enter image description here

enter image description here

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

enter image description here

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

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

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

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

关于java - JDK交叉编译使用哪个版本的JAX WS和JAXB?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30515999/

相关文章:

java - 递归查找链表的最大值

java - 在构造函数之外添加的组件不会出现

java - IntelliJ 的测试支持 Maven 感知吗?

java - 通过每次 Push 在 GitLab 上创建 JavaDoc

java - 我可以将多个处理器的注释放入 Java 类中吗?

java - 如何使用 JAXB 为多态类型添加额外的 XML 元素

java - 在 Web 方法中使用 JAXB 忽略 JodaTime 方法参数

java - Hibernate 中泛型类的映射

java - 尝试获取日历中框的选择

maven - 如何使 gradle 模块位于同一目录中?