Mule JaxB 绑定错误 - “包”不包含 ObjectFactory.class 或 jaxb.index
Posted
技术标签:
【中文标题】Mule JaxB 绑定错误 - “包”不包含 ObjectFactory.class 或 jaxb.index【英文标题】:Mule JaxB binding error - "package" doesnt contain ObjectFactory.class or jaxb.index 【发布时间】:2016-05-19 00:50:45 【问题描述】:我正在使用 mule 和 maven。我使用了 xml 到对象转换器。我的模型文件使用 jaxb 注释进行了注释。 JAXB 上下文引用如下所示 -:
mulexml:jaxb-context name="JAXB_Context" packageNames="com.xml.model" doc:name="JAXB Context"/>
我创建了一个带有 JAXB 注释类名称的 jaxb.index 文件,并放在 com.xml.model 文件夹中。
但它仍然显示以下异常-:
org.springframework.beans.factory.BeanCreationException:创建名为“_muleNotificationManager”的 bean 时出错:FactoryBean 抛出 对象创建异常;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为“JAXB_Context”的 bean:调用 init 方法 失败的;嵌套异常是 javax.xml.bind.JAXBException: Provider com.sun.xml.bind.v2.ContextFactory 无法实例化: javax.xml.bind.JAXBException:“com.xml.model”不包含 ObjectFactory.class 或 jaxb.index - 带有链接异常:[javax.xml.bind.JAXBException:“com.xml.model”不包含 ObjectFactory.class 或 jaxb.index]
这适用于没有 maven 的 mule 项目。
【问题讨论】:
【参考方案1】:我已经找到了解决方案。我们需要保持jaxb.index
文件夹中的jaxb.index
文件具有相同的包结构。
我认为在使用 Maven 时,它不会从包中选择文件。它使用自己的构建方法,但是当不使用 Maven 时,构建是由 Anypoint Studio 自己的构建方法完成的,因此它会获取 jaxb 文件。
【讨论】:
是的,jaxb.index
文件必须放在Maven
的资源文件夹中才能正确导出到可部署的包中。【参考方案2】:
Arup,您能否检查一下包含包/类 com.xml.model.* 的 zip 文件或 jar 文件是否存在。这意味着该项目无法看到 maven 生成的压缩文件中的那些。
【讨论】:
我已经找到了解决方案。我们需要将 jaxb.index 文件保存在具有相同包结构的资源文件夹中。我认为在使用 Maven 时,它不会从包中选择文件。它使用自己的构建方法,但在没有 maven 的情况下使用时,构建是由 Anypoint Studio 自己的构建方法完成的,因此它会获取 jaxb 文件。 我们通常使用maven中的插件来自动生成jaxb.index和ObjectFactory。 Maven 还将把它放在生成的 zip 文件中的目标目录 / 中。检查此链接:mojohaus.org/jaxb2-maven-plugin/Documentation/v2.2/…【参考方案3】:这是我如何让它与 jaxb.index 一起工作
比如说,您所有的编组类(如 Order、Customer、Merchant)都位于包 com.common.beans 中
您的流 xml Jaxb-Context 将被配置为指向该包:
在 com.common.beans 包中创建一个 jaxb.index 文件,其中每行包含编组类的内容,如下所示:
订购
客户
商家
错误应该消失。
享受吧! :)
【讨论】:
以上是关于Mule JaxB 绑定错误 - “包”不包含 ObjectFactory.class 或 jaxb.index的主要内容,如果未能解决你的问题,请参考以下文章
最新的 Open JDK 8 JAXB 库无法解组具有包含换行符的属性的对象
JAXB - 属性“值”已定义。使用 <jaxb:property> 解决此冲突
UnMarshalException 不包含 ObjectFactory.class 或 jaxb.index
从 BizTalk WCF-WebHttp 适配器向 Mule 服务发布消息时出错:服务不支持内容类型应用程序/json