Mule JaxB 绑定错误 - “包”不包含 ObjectFactory.class 或 jaxb.in​​dex

Posted

技术标签:

【中文标题】Mule JaxB 绑定错误 - “包”不包含 ObjectFactory.class 或 jaxb.in​​dex【英文标题】: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.in​​dex 文件,并放在 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.in​​dex - 带有链接异常:[javax.xml.bind.JAXBException:“com.xml.model”不包含 ObjectFactory.class 或 jaxb.in​​dex]

这适用于没有 maven 的 mule 项目。

【问题讨论】:

【参考方案1】:

我已经找到了解决方案。我们需要保持jaxb.index文件夹中的jaxb.index文件具有相同的包结构。

我认为在使用 Maven 时,它不会从包中选择文件。它使用自己的构建方法,但是当不使用 Maven 时,构建是由 Anypoint Studio 自己的构建方法完成的,因此它会获取 jaxb 文件。

【讨论】:

是的,jaxb.index 文件必须放在Maven 的资源文件夹中才能正确导出到可部署的包中。【参考方案2】:

Arup,您能否检查一下包含包/类 com.xml.model.* 的 zip 文件或 jar 文件是否存在。这意味着该项目无法看到 maven 生成的压缩文件中的那些。

【讨论】:

我已经找到了解决方案。我们需要将 jaxb.in​​dex 文件保存在具有相同包结构的资源文件夹中。我认为在使用 Maven 时,它不会从包中选择文件。它使用自己的构建方法,但在没有 maven 的情况下使用时,构建是由 Anypoint Studio 自己的构建方法完成的,因此它会获取 jaxb 文件。 我们通常使用maven中的插件来自动生成jaxb.in​​dex和ObjectFactory。 Maven 还将把它放在生成的 zip 文件中的目标目录 / 中。检查此链接:mojohaus.org/jaxb2-maven-plugin/Documentation/v2.2/…【参考方案3】:

这是我如何让它与 jaxb.in​​dex 一起工作

比如说,您所有的编组类(如 Order、Customer、Merchant)都位于包 com.common.beans 中

    您的流 xml Jaxb-Context 将被配置为指向该包:

    在 com.common.beans 包中创建一个 jaxb.in​​dex 文件,其中每行包含编组类的内容,如下所示:

订购

客户

商家

错误应该消失。

享受吧! :)

【讨论】:

以上是关于Mule JaxB 绑定错误 - “包”不包含 ObjectFactory.class 或 jaxb.in​​dex的主要内容,如果未能解决你的问题,请参考以下文章

Maven 为 Munits 构建 - Mule

最新的 Open JDK 8 JAXB 库无法解组具有包含换行符的属性的对象

JAXB - 属性“值”已定义。使用 <jaxb:property> 解决此冲突

XmlRootElement JAXB

UnMarshalException 不包含 ObjectFactory.class 或 jaxb.in​​dex

从 BizTalk WCF-WebHttp 适配器向 Mule 服务发布消息时出错:服务不支持内容类型应用程序/json