我(尝试)使用drools来处理我的定价规则.但是当我尝试执行规则时,抛出以下异常:
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.<init>(ObjectInputStream.java:280) at org.drools.common.DroolsObjectInputStream.<init>(DroolsObjectInputStream.java:55) at org.drools.common.DroolsObjectInputStream.<init>(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 /使用规则/等等.这种例外的典型原因是什么?我应该寻找什么来找到异常的原因?有人有策略来查明问题吗?
更新:
有意思……我的申请似乎无论如何都有用.看起来它从错误中恢复过来.那么,也许是我项目库中的错误?不好看到每次启动时记录的错误,但似乎并不重要.嗯……
解决方法
您将XML文件作为ObjectInputStream传递,但此数据应先通过ObjectOutputStream进行序列化.