【问题标题】:jibx: Missing required object exceptionjibx:缺少必需的对象异常
【发布时间】:2011-09-08 09:52:50
【问题描述】:

我正在使用 JiBX 来编组一些类。它运作良好,直到我收到IllegalStateException

java.lang.IllegalStateException: Missing required object
at org.jibx.runtime.impl.MarshallingContext.pushObject(MarshallingContext.java:1181)
at com.dreipplus.profiler.importer.binding.trans.JiBX_binding0MungeAdapter.JiBX_binding0_marshalAttr_1_18()
at com.dreipplus.profiler.importer.binding.trans.JiBX_binding0RoomProductVO_access.marshal()
at com.dreipplus.profiler.importer.binding.trans.LibRoomObjectImport.JiBX_binding0_marshal_3_0(LibRoomObjectImport.java)
at com.dreipplus.profiler.importer.binding.trans.JiBX_binding0LibRoomObjectImport_access.marshal()
at com.dreipplus.profiler.importer.binding.trans.LibRoomObjectImport.marshal(LibRoomObjectImport.java)
at com.dreipplus.profiler.importer.binding.trans.JiBX_binding0MungeAdapter.JiBX_binding0_marshal_1_3()
at com.dreipplus.profiler.importer.binding.trans.LibraryImport.JiBX_binding0_marshal_2_0(LibraryImport.java)
at com.dreipplus.profiler.importer.binding.trans.JiBX_binding0LibraryImport_access.marshal()
at com.dreipplus.profiler.importer.binding.trans.LibraryImport.marshal(LibraryImport.java)
at com.dreipplus.profiler.importer.binding.trans.JiBX_binding0MungeAdapter.JiBX_binding0_marshal_1_0()
at com.dreipplus.profiler.importer.binding.trans.Libraries.JiBX_binding0_marshal_2_0(Libraries.java)
at com.dreipplus.profiler.importer.binding.trans.JiBX_binding0Libraries_access.marshal()
at com.dreipplus.profiler.importer.binding.trans.Libraries.marshal(Libraries.java)
at org.jibx.runtime.impl.MarshallingContext.marshalRoot(MarshallingContext.java:1021)
at org.jibx.runtime.impl.MarshallingContext.marshalDocument(MarshallingContext.java:1083)
at com.dreipplus.profiler.library.LibraryTest.testExportLibrary(LibraryTest.java:186)
at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:70)

xml 输出停止在另一个(更远的)位置(也许它没有被刷新):

...         
<objectsmaterial>
            <material>
                <name>
                    <localizedtext size="1">
                        <entry key="de_AT">Furnier Kanadische Ahorn</entry>
                    </localizedtext>
                </name>
                <longtext>
                    <localizedtext size="1">
                        <entry key="de_AT">
[EOF]

usage="optional" 没有设置有问题吗? JiBX 是否期望一个不存在的字段?我在 JiBX 上缺少调试输出,但这已经被报告为他们的 JIRA 中的一个错误。

如果有人知道出了什么问题,或者我如何找出问题所在,请!

这里是我的 binding0.xml binding0.xml pastebin

提前致谢

弗洛里安·胡贝尔

【问题讨论】:

    标签: java xml jibx


    【解决方案1】:

    如果一个字段为空,如果它有(XML-)子元素,则会发生 IllegalArgumentException。

    我仔细检查了代码,发现了错误。

    【讨论】:

    • 我有同样的问题和解决方法(设置非空引用“必填”字段)。谢谢@itshorty
    • 澄清:如果您的对象希望编组到&lt;root&gt;&lt;element&gt;&lt;subelement/&gt;&lt;/element&gt;&lt;/root&gt;,但root.element == null JiBX 将抛出异常。我通过检查 MarshallingContext 类中的变量 m_objectStack 发现了包含 null 值的元素。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多