在我的 Maven 项目中,我应该将哪些工件用于 JAXB RI?

2022-08-31 19:53:40

从历史上看,我总是在我的 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 运行时模块。

所以看起来这些文物现在已经过时了。

问题是:

应该改用哪些工件?


答案 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>

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

日食用法

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

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

这是由于以下问题:

Maven 没有正确挑选JAVA_HOME

@rustyx的解决方案是将选项添加到:-vmeclipse.ini

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

答案 2

推荐