我试图生成可以在以下位置找到的验证器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文件?
答案 0 :(得分:1)
XJC实用程序将根据目标命名空间将类生成到包名称中。如果没有默认值,它会将它们放在一个名为generated的包中。您可以提供包名称作为参数。
xjc -p com.example.foo schema.xsd
我建议将每个模式生成到一个单独的包中。从XML模式生成的类创建JAXBContext
时,我总是建议在包名称上执行此操作。如果有多个包名称,只需将它们与.
字符分开。
JAXBContect jc = JAXBContext.newInstance("com.example.foo:com.example.bar");