一尘不染

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

java

从历史上看,我一直在Maven项目中使用以下JAXB RI工件:

  • com.sun.xml.bind:jaxb-impl - 运行
  • com.sun.xml.bind:jaxb-xjc -模式编译器
  • com.sun.xml.bind:jaxb-jxc -模式生成器

从大约版本开始,2.2.10*这些工件现在被描述为“旧”

com.sun.xml.bind:jaxb-impl

旧的JAXB运行时模块。

因此,这些工件看起来已经过时了。

问题是:

应该改用哪些工件?


阅读 245

收藏
2020-09-08

共1个答案

一尘不染

在与Oracle明确之后,应使用以下工件:

运行

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

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

模式编译器(XJC)

如果您有XML模式,并想从中生成Java代码:

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

模式生成器(JXC / schemagen

如果您具有带有JAXB批注的Java类,并希望基于它们生成XML模式:

<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控制台。您可能在那里看到以下错误消息:

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

这是由于以下问题:

Maven没有正确选择JAVA_HOME

@rustyx
解决方案是在-vm选项中添加eclipse.ini

-vm
<PATH_TO_JDK>\jre\bin\javaw.exe
2020-09-08