使用从qbxml xsd模式生成的JAXB xjc类时出错

使用从qbxml xsd模式生成的JAXB xjc类时出错,xml,jaxb,xsd,qbxml,Xml,Jaxb,Xsd,Qbxml,我正在尝试从以下文件中找到的验证器xsd文件生成可以使用的类: C:\ProgramFiles\Intuit\IDN\Common\tools\validator 我运行: xjc qbxmltypes.xsd qbxml.xsd qbxmlso.xsd qbxmlops.xsd 该工具会按预期生成“生成的”目录和类文件。但是,这些类似乎不能正常工作。我把这些类添加到我的项目中,重新打包,所有的东西都编译得很好。当我创建一个新的JAXBContext对象时: JAXBContext-JAXBCo

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

C:\ProgramFiles\Intuit\IDN\Common\tools\validator

我运行:

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

该工具会按预期生成“生成的”目录和类文件。但是,这些类似乎不能正常工作。我把这些类添加到我的项目中,重新打包,所有的东西都编译得很好。当我创建一个新的JAXBContext对象时:

JAXBContext-JAXBContext=JAXBContext.newInstance(ObjectFactory.class)

在正常情况下,这可以很好地编译,但我在System.err中遇到运行时错误(很多,重复同一行),如下所示:

找不到[packagenamehere]的XmlSchema注释

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


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

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

xjc -p com.example.foo schema.xsd
我建议将每个模式生成到一个单独的包中。从XML模式生成的类创建
JAXBContext
时,我始终建议对包名执行此操作。当有多个包名时,只需使用
字符将它们分开

JAXBContect jc = JAXBContext.newInstance("com.example.foo:com.example.bar");

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

xjc -p com.example.foo schema.xsd
我建议将每个模式生成到一个单独的包中。从XML模式生成的类创建
JAXBContext
时,我始终建议对包名执行此操作。当有多个包名时,只需使用
字符将它们分开

JAXBContect jc = JAXBContext.newInstance("com.example.foo:com.example.bar");

这与手头的问题无关,哈哈。而且你没有彻底阅读问题。@moonlightcheese-我重新阅读了你的问题,我相信我所说的一切仍然适用。指定
-p
标志可以消除重新打包类的需要。在包名上创建
JAXBContext
,而不是在
ObjectFactory
上创建,这样对您会更好。谢谢您的回复。我确实试过了你在这里贴的信。从模式重建类并使用
JAXBContext.newInstance(“com.example.qbxml.jaxb”)
这是jaxb类所在的包。同样的问题依然存在。我浏览了一下:JAXB似乎希望在名为package info.java的文件中定义此注释。@moonlightcheese-是的,
@XmlSchema
注释是一个类中goes的包级注释,其源文件名为
package info.java
(请参阅:)。您的JAXB impl应该为您生成这个(如果需要的话)。我想不出一个需要在事后手动添加的用例。@moonlightcheese-您可以在标准Java SE安装中尝试,以确保一切正常,以确认问题出在Android端口上。这与手头的问题无关。lol。而且您没有彻底阅读问题。@moonlightcheese-I重读你的问题,我相信我所说的一切仍然适用。指定
-p
标志可以消除重新打包类的需要。在包名上创建
JAXBContext
,而不是在
ObjectFactory
上创建,这样对您会更好。谢谢您的回复。我确实试过了你在这里贴的信。从模式重建类并使用
JAXBContext.newInstance(“com.example.qbxml.jaxb”)
这是jaxb类所在的包。同样的问题依然存在。我浏览了一下:JAXB似乎希望在名为package info.java的文件中定义此注释。@moonlightcheese-是的,
@XmlSchema
注释是一个类中goes的包级注释,其源文件名为
package info.java
(请参阅:)。您的JAXB impl应该为您生成这个(如果需要的话)。我想不出一个用例,你需要在事后手动添加一个。@moonlightcheese-你可以在一个标准的JavaSE安装中尝试,以确保一切正常,确认问题出在Android端口上。