2010-10-01 15 views
6

Ja (próbuję) używać droolsów do przetwarzania moich reguł cenowych. Ale gdy próbuję wykonać zasad następujących jest wyjątek:Możliwe przyczyny "StreamCorruptedException: niepoprawny nagłówek strumienia"

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 

Jak cały kod jest z biblioteki Myślę, że problem nie jest w kodzie, ale w mojej konfiguracji projektu/wykorzystaniu puszek/użytkowania zasady/cokolwiek. Jakie są typowe przyczyny tego wyjątku? Czego powinienem szukać, aby znaleźć przyczynę wyjątku? Ktoś ma strategię wskazania problemu?

Aktualizacja: Interesujące ... moja aplikacja i tak działa. Wygląda na to, że odzyskuje się po błędzie. Więc może błąd w bibliotece mojego projektu? Niezbyt dobrze jest widzieć błąd rejestrowany przy każdym starcie, ale nie wydaje się być krytyczny. Hmmm ...

Odpowiedz

17

Przechodzisz plik XML jako ObjectInputStream, ale dane te powinny być wcześniej serializowane przez ObjectOutputStream.

+5

To prawda, że ​​3C3F786D to bestsss

+0

Pomogło mi to z innym problemem ... dziękuję! –

+0

W jaki sposób działałbym, jeśli strumień wejściowy przekazany do strumienia wejściowego obiektu jest tworzony z zasobu w folderze zasobów projektu? Przykład: InputStream is = this.getClass(). GetResourceAsStream (pathToResource); –

Powiązane problemy