1

我正在尝试从以下位置的验证器 xsd 文件中生成可以使用的类:

C:\Program Files\Intuit\IDN\Common\tools\validator

我跑:

xjc qbxmltypes.xsd qbxml.xsd qbxmlso.xsd qbxmlops.xsd

并且该工具按预期生成“生成”目录和类文件。但是,这些类似乎无法正常工作。我将这些类添加到我的项目中,重新打包它们,一切都编译得很好。当我创建一个新的 JAXBContext 对象时:

JAXBContext jaxbContext = JAXBContext.newInstance(ObjectFactory.class);

以正常方式,这编译得很好,但我在 System.err 中得到运行时错误(很多,重复同一行),内容如下:

No XmlSchema annotation found for [packagenamehere]

我在包路径中搜索 XmlSchema 的用法,但没有找到。JAXB 在运行时显然需要这个。

我使用了错误的 .xsd 文件吗?我应该将 XmlSchema 注释添加到 ObjectFactory.java 类吗?我在这里做错了什么?我想我只是在用 xjc 构建错误的类。我应该编译哪些 .xsd 文件?

4

1 回答 1

1

XJC 实用程序将根据目标命名空间将类生成到包名中。如果默认情况下没有,它将把它们放在一个名为 generate 的包中。您可以提供包名称作为参数。

xjc -p com.example.foo schema.xsd

我建议将您的每个模式生成到一个单独的包中。当JAXBContext从 XML 模式生成的类创建一个从类时,我总是建议在包名上这样做。当有多个包名时,只需用.字符将它们分开即可。

JAXBContect jc = JAXBContext.newInstance("com.example.foo:com.example.bar");
于 2012-11-25T19:59:10.583 回答