2010-10-01 9 views
6

Ich (versuche) Drools zu verwenden, um meine Preisregeln zu verarbeiten. Aber wenn ich versuche, die Regeln führen Sie die folgende Ausnahme ausgelöst:Mögliche Ursachen für "StreamCorruptedException: ungültiger Stream-Header"

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 

Wie die gesamten Code aus einer Bibliothek ist denke ich das Problem nicht im Code, sondern in meiner Projekt-Setup/Verwendung von Gläsern/Verwendung Regeln/was auch immer. Was sind die typischen Gründe für diese Ausnahme? Was sollte ich suchen, um den Grund für die Ausnahme zu finden? Jemand hat eine Strategie, um das Problem zu lokalisieren?

Update: Interessant ... scheint meine Anwendung trotzdem zu funktionieren. Sieht so aus, als ob es sich von dem Fehler erholt. Also, vielleicht ein Fehler in der Bibliothek meines Projekts? Es ist nicht schön, den Fehler bei jedem Start zu sehen, aber er scheint nicht kritisch zu sein. Hmmm ...

Antwort

17

Sie übergeben eine XML-Datei als ObjectInputStream, aber diese Daten sollten zuvor über eine ObjectOutputStream serialisiert werden.

+5

das ist korrekt 3C3F786D ist bestsss

+0

Das hat mir bei einem ganz anderen Problem geholfen ... danke! –

+0

Wie würde ich handeln, wenn der an den Objekteingabestrom übergebene Eingabestream von einer Ressource im Ressourcenordner des Projekts erstellt wird? Beispiel: InputStream ist = this.getClass(). GetResourceAsStream (pathToResource); –

Verwandte Themen