2010-10-01 42 views
6

我(嘗試)使用drools來處理我的定價規則。但是,當我嘗試執行規則的以下異常被拋出:可能的原因爲「StreamCorruptedException:無效的流頭」

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 

由於所有的代碼是從圖書館中,我想這個問題是不是代碼,但在我的項目設置/使用的瓶/使用規則/不管。這種例外的典型原因是什麼?我應該尋找什麼才能找到例外的原因?有人有策略來查明問題?

更新: 有趣......我的應用程序似乎無論如何工作。看起來它從錯誤中恢復。那麼,也許我的項目庫中有一個bug?不太高興看到每個啓動時記錄的錯誤,但似乎並不重要。嗯...

回答

17

您正在傳遞一個XML文件作爲ObjectInputStream,但此數據應通過ObjectOutputStream以前序列化。

+5

這是正確的3C3F786D是<?xml。非常注意:) – bestsss 2011-01-13 13:19:58

+0

這幫助了我一個非常不同的問題......謝謝! – 2013-12-06 19:32:56

+0

如果通過項目的資源文件夾中的資源創建輸入流傳入對象輸入流,我該如何處理?示例:InputStream is = this.getClass()。getResourceAsStream(pathToResource); – 2015-01-08 09:41:53

相關問題