我的机器上安装了 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 中的某个位置。
==== 另一方面,如果我们通过 Maven 提供具有 COMPILE 作用域的 JAXWS jar,则重复上述相同步骤将导致包资源管理器 View 显示类文件位于 JAXWS Jar 中,而不是 JDK 的 rt.jar 中。
++++++++++++++++++++
++++++++++++++++++++
++++++++++++++++++++
这表明如果 JAXWS jar 作为依赖项提供,则不会使用基于 JDK 的 JAXWS API。
关于java - JDK交叉编译使用哪个版本的JAX WS和JAXB?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30515999/