JAXB(RI)库与JDK

Jul*_*ron 5 jaxb java-8

使用maven,有一些插件可以支持,例如从XSD生成JAXB类,例如org.codehaus.mojo:jaxb2-maven-plugin和org.jvnet.jaxb2.maven2:maven-jaxb2-plugin.这些版本的最新版本依赖于例如org.glassfish.jaxb:jaxb-xjc和org.glassfish.jaxb:jaxb-runtime(版本2.2.11).

但是我想知道如果我使用它们从XSD生成我的类但在运行时只使用JDK 8(包含2.2.8版本)会发生什么会发生:我不会有运行错误的风险吗?
那么是否有必要或建议始终使用与我用于从XSD生成类的jaxb-xjc版本相对应的jaxb-runtime?

当然,我可以简单地将依赖关系覆盖到jaxb-xjc等,并明确使用2.2.8版.但即便如此,我想知道我是否会得到与直接使用JDK 8 xjc工具相同的结果?

lex*_*ore 3

你有三个阶段:

  • (1) 模式派生代码的生成
  • (2) 架构派生代码的编译
  • (3)运行时间

最重要的是,您用于编译的 JAXB API (2) 与您在运行时使用的 JAXB API (3) 兼容。如果情况并非如此,那么您可能会编译使用某些注释的代码,这些注释稍后在运行时中不可用。您将首先在运行时看到错误。

至于(1)与(2),这也是必要的。如果您使用 JAXB 2.2.x 生成并使用 JAXB 2.1.x 进行编译,则这不一定有效。但这并不那么重要,因为这将是一个编译错误,您将被迫纠正。

因此,如果您的问题只是使用的 JAXB 版本与 JDK 中嵌入的 JAXB 版本,我不会担心这个。只要它能编译,你就永远是安全的。