【问题标题】:Using EclipseLink (MOXy) in Eclipse在 Eclipse 中使用 EclipseLink (MOXy)
【发布时间】:2014-12-23 22:20:15
【问题描述】:

我正在编写一个 Java 程序,它使用 JAXB 从给定的 XSD 创建 XML 文件,并且正在使用 Eclipse 首次。我还下载了 EclipseLink 以在 Eclipse 中使用,因为我想使用 MOXy 作为我的 JAXB 提供程序。不幸的是,我不确定我是否正确使用它。我已经阅读了各种文档、博客和论坛,其中提到了各种技术,但由于我是新手,我不确定我的理解是否正确。有人可以请教我吗?

我了解 MOXy 是参考实现的替代 JAXB 实现,因此具有比参考实现中的功能更有用的功能。考虑到这一点,我下载了 EclipseLink 并将 eclipselink.jar 放在我的类路径中,并将 jaxb.properties 文件添加到我的包中。在 eclipselink\jlib 文件夹下还有另一个名为 moxy 的文件夹,其中包含 6 个 jar 文件,这些文件是做什么用的,我还需要将它们包含在我的类路径中吗?

从 Eclipse 生成的 JAXB 类在文件顶部自动生成了 cmets。这些 cmets 提到它们是由参考实现而不是 MOXy 生成的。我是否应该期望 JAXB 类由 MOXy 而不是 JAXB 参考实现生成?

谢谢

【问题讨论】:

  • 假设你做了right click on xsd > Generate > AJXB classes... 你勾选了use EclipseLink MOXy as the JAXB implementation 复选框吗?
  • 我在 New > Other.. > JAXB > JAXB Project 下创建了我的项目,并且在生成 JAXB 类时没有看到“使用 EclipseLink MOXy 作为 JAXB 实现”。

标签: eclipse jaxb eclipselink


【解决方案1】:

我了解 Moxy 是替代 JAXB 实现 参考实现,因此具有可能有用的功能 高于参考实现中的那些。

MOXy 和 JAXB 参考实现 (RI) 都是 JSR-222 的实现,并且通过了相同的合规性测试套件。在任何使用 RI 的地方都可以使用 MOXy,而不会影响任何用户。例如,WebLogic 现在使用 MOXy 作为默认 JAXB 提供程序,您可以将其配置为使用 RI 作为备用提供程序。

在 eclipselink\jlib 文件夹下还有一个名为 moxy 的文件夹 包含 6 个 jar 文件,这些是什么,我还需要 将它们包含在我的类路径中?

jlib/moxy 文件夹包含 XJC 的实现,它是从我们的 bin/jaxb-compiler.sh 脚本调用的,以及一些支持的库,供那些使用 Java SE 6 之前的 Java 版本的人使用。

Eclipse 生成的 JAXB 类已经自动生成 cmets 在文件的顶部。这些 cmets 提到他们 是由参考实现而不是 Moxy 生成的。我是不是该 期望 JAXB 类由 Moxy 而不是 JAXB 生成 参考实现?

MOXy 利用 JAXB 参考实现中的 XJC(XML Schema to Java Compiler)。这就是您在生成的 cmets 中看到 cmets 的原因。 XJC 是一个非常棒的组件,有很多有用的社区贡献的扩展,所以我们没有发明自己的。

【讨论】:

  • 谢谢,布莱斯。为了生成 JAXB 类,我在设置 JAXB 项目时选择了“目标运行时”作为 jdk160_24 而不是 jre6,因为它有自己的 XJC。由于我在生成 JAXB 类时没有将 eclipselink.jar 或任何 jlib/moxy jars 放入我的类路径中,但随后将 eclipselink.jar 放在我的类路径中,并在我的包中放置了一个 jaxb.properties 文件,因此我生成了我的 JAXB 类,并且仍然没有 jlib/moxy jars,我的环境是否设置为使用 MOXy,或者我仍然需要在我的类路径中使用 lib/moxy jars,并且可能使用所有这些 jars 重新生成我的类?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-09
  • 2012-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多