2010-10-01 4 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 

Как весь код из библиотеки, я думаю, что проблема не в коде, но в моих настройках проекта/использовании банок/использовании правила/что угодно. Каковы типичные причины этого исключения? Что я должен искать, чтобы найти причину исключения? У кого-то есть стратегия, чтобы определить проблему?

Обновление: Интересно ... мое приложение, похоже, работает в любом случае. Похоже, он восстанавливается после ошибки. Так может быть, ошибка в библиотеке моего проекта? Нехорошо видеть, что ошибка регистрируется при каждом запуске, но не кажется критичной. Hmmm ...

ответ

17

Вы передаете XML-файл как ObjectInputStream, но эти данные должны быть предварительно сериализованы через ObjectOutputStream.

+5

это правильно 3C3F786D есть bestsss

+0

Это помогло мне с совсем другой проблемой ... спасибо! –

+0

Как я буду действовать, если входной поток, переданный в поток ввода объекта, создается из ресурса в папке ресурса проекта? Пример: InputStream = this.getClass(). GetResourceAsStream (pathToResource); –