我应该在Maven项目中为JAXB RI使用哪些工件?

时间:2014-10-16 20:34:36

标签: java maven jaxb jaxb2

历史上,我总是在我的Maven项目中使用以下JAXB RI工件:

  • com.sun.xml.bind:jaxb-impl - 运行时
  • com.sun.xml.bind:jaxb-xjc - 架构编译器
  • com.sun.xml.bind:jaxb-jxc - 架构生成器

由于大约版本2.2.10*,这些工件现在是described as "old"

  

com.sun.xml.bind:jaxb-impl

     

旧的JAXB运行时模块。

所以看起来这些工件现在已经过时了。

问题是:

应该使用哪些工件?

1 个答案:

答案 0 :(得分:54)

在使用Oracle澄清后,应使用以下工件:

运行

如果要将XML解组为Java对象或将Java对象编组为XML:

<dependency>
    <groupId>org.glassfish.jaxb</groupId>
    <artifactId>jaxb-runtime</artifactId>
    <version>...</version>
</dependency>

架构编译器(XJC)

如果您有XML Schema并且想要从中生成Java代码:

<dependency>
    <groupId>org.glassfish.jaxb</groupId>
    <artifactId>jaxb-xjc</artifactId>
    <version>...</version>
</dependency>

架构生成器(JXC / schemagen

如果你有带有JAXB注释的Java类,并希望基于它们生成XML Schema:

<dependency>
    <groupId>org.glassfish.jaxb</groupId>
    <artifactId>jaxb-jxc</artifactId>
    <version>...</version>
</dependency>

后两个工件(org.glassfish.jaxb:jaxb-xjcorg.glassfish.jaxb:jaxb-jxc)由Maven插件包装,因此通常在运行时不需要它们。

Eclipse用法

如果您的Maven项目以某种方式无法获得完整的类路径,请打开调试输出并检查Maven控制台。您可能会在那里看到以下错误消息:

  

[错误]'dependencyManagement.dependencies.dependency.systemPath'对于com.sun:tools:jar必须指定绝对路径,但是$ {tools.jar} @

这是由于以下问题:

  

Maven not picking JAVA_HOME correctly

@rustyx的solution是向-vm添加eclipse.ini选项:

-vm
<PATH_TO_JDK>\jre\bin\javaw.exe