2010-10-01 4 views
6

Je (essaie d'utiliser) des baves pour traiter mes règles de tarification. Mais lorsque je tente d'exécuter les règles l'exception suivante est levée:Causes possibles de "StreamCorruptedException: en-tête de flux invalide"

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 

Comme tout le code est d'une bibliothèque, je suppose que le problème est pas dans le code, mais dans ma configuration de projet/utilisation des pots/utilisation de règles/peu importe. Quelles sont les raisons typiques de cette exception? Que dois-je rechercher pour trouver la raison de l'exception? Quelqu'un a une stratégie pour identifier le problème?

Mise à jour: Intéressant ... mon application semble fonctionner malgré tout. On dirait qu'il récupère de l'erreur. Donc, peut-être un bug dans la bibliothèque de mon projet? Pas agréable de voir l'erreur enregistrée à chaque démarrage, mais ne semble pas être critique. Hmmm ...

Répondre

17

Vous transmettez un fichier XML en tant que ObjectInputStream, mais ces données doivent être préalablement sérialisées via un ObjectOutputStream.

+5

c'est correct 3C3F786D est bestsss

+0

Cela m'a aidé avec un problème très différent ... merci! –

+0

Comment agir si le flux d'entrée passé dans le flux d'entrée d'objet est créé à partir d'une ressource dans le dossier de ressources du projet? Exemple: InputStream est = this.getClass(). GetResourceAsStream (pathToResource); –

Questions connexes