Mule JaxB 绑定错误 - "package" 不包含 ObjectFactory.class 或 jaxb.index

Mule JaxB binding error - "package" doesnt contain ObjectFactory.class or jaxb.index

我正在将 mule 与 maven 一起使用。我使用了 xml 对象转换器。我的模型文件带有 jaxb 注释。 JAXB 上下文引用看起来像这样 -:

mulexml:jaxb-context name="JAXB_Context" packageNames="com.xml.model" doc:name="JAXB Context"/>

我创建了一个 jaxb.index 文件,其中 JAXB 的名称注释 类 并放置在 com.xml.model 文件夹中。

但仍然显示以下异常-:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name '_muleNotificationManager': FactoryBean threw exception on object creation; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'JAXB_Context': Invocation of init method failed; nested exception is javax.xml.bind.JAXBException: Provider com.sun.xml.bind.v2.ContextFactory could not be instantiated: javax.xml.bind.JAXBException: "com.xml.model" doesnt contain ObjectFactory.class or jaxb.index - with linked exception: [javax.xml.bind.JAXBException: "com.xml.model" doesnt contain ObjectFactory.class or jaxb.index]

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

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

我已经找到解决办法了。我们需要将 jaxb.index 文件保存在具有相同包结构的 resources 文件夹中。

我认为在使用 Maven 时,它不会从包中选取文件。它使用自己的构建方法,但在没有 Maven 的情况下使用时,构建由 Anypoint studio 自己的构建方法完成,因此它获取 jaxb 文件。

以下是我如何使用它 jaxb.index

说,所有你编组 类 像订单,客户,商家都位于包 com.common.beans

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

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

订单

客户

商家

错误应该会消失。

尽情享受吧! :)