“StreamCorruptedException:invalid stream header”的可能原因

我(尝试)使用drools来处理我的定价规则。 但是当我尝试执行规则时,抛出以下exception:

java.lang.RuntimeException: KnowledgeAgent exception while trying to deserialize KnowledgeDefinitionsPackage at org.drools.agent.impl.KnowledgeAgentImpl.rebuildResources(KnowledgeAgentImpl.java:418) at org.drools.agent.impl.KnowledgeAgentImpl.applyChangeSet(KnowledgeAgentImpl.java:120) at org.drools.agent.impl.KnowledgeAgentImpl.applyChangeSet(KnowledgeAgentImpl.java:109) at com.sapienter.jbilling.server.pluggableTask.PluggableTask.readKnowledgeBase(PluggableTask.java:115) at com.sapienter.jbilling.server.rule.RulesBaseTask.executeRules(RulesBaseTask.java:57) at com.sapienter.jbilling.server.item.tasks.RulesPricingTask2.getPrice(RulesPricingTask2.java:81) at com.sapienter.jbilling.server.item.ItemBL.getPrice(ItemBL.java:357) [...many not so interesting lines...] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454) at java.lang.Thread.run(Thread.java:619) Caused by: java.io.StreamCorruptedException: invalid stream header: 3C3F786D at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:783) at java.io.ObjectInputStream.(ObjectInputStream.java:280) at org.drools.common.DroolsObjectInputStream.(DroolsObjectInputStream.java:55) at org.drools.common.DroolsObjectInputStream.(DroolsObjectInputStream.java:49) at org.drools.util.DroolsStreamUtils.streamIn(DroolsStreamUtils.java:189) at org.drools.util.DroolsStreamUtils.streamIn(DroolsStreamUtils.java:158) at org.drools.agent.impl.KnowledgeAgentImpl.rebuildResources(KnowledgeAgentImpl.java:408) ... 88 more 

由于所有代码都来自库,我猜问题不在代码中,而是在我的项目设置/使用jar /使用规则/等等。 这种例外的典型原因是什么? 我应该寻找什么来找到exception的原因? 有人有策略来查明问题吗?

更新:有趣…我的应用程序似乎仍然有效。 看起来它从错误中恢复过来。 那么,也许是我项目库中的错误? 不好看到每次启动时记录的错误,但似乎并不重要。 嗯……

您将XML文件作为ObjectInputStream传递,但此数据应先通过ObjectOutputStream进行序列化。