JAXB(RI)库与JDK

时间:2015-08-05 10:27:25

标签: 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工具相同的结果?

1 个答案:

答案 0 :(得分:3)

您有三个阶段:

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

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

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

因此,如果问题只是与JDK中嵌入的JAXB版本使用的JAXB版本,我不会担心这一点。只要它编译,你就像你一样安全。