2010-10-01 21 views
6

Fiyatlandırma kurallarını işlemek için droolları kullanabilirim. Kuralları yürütmeye çalıştığınızda Ancak aşağıdaki istisnası atılır: tüm kod, bir kütüphaneden olduğu gibi"StreamCorruptedException: geçersiz akış başlığı" olası nedenleri

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 

Sorun kodunda değil ama kavanoz/Kullanım projemin setup/kullanımda tahmin kurallar/neyse. Bu istisna için tipik nedenler nelerdir? İstisna nedenini bulmak için ne aramalıyım? Birisinin sorunu saptamak için bir stratejisi var mı?

Güncelleştirme: İlginç ... uygulama zaten işe yarayacak gibi görünüyor. Hatadan kurtarılmış gibi görünüyor. Öyleyse, projemin kütüphanesinde bir hata olabilir mi? Her başlangıçta hata görüldüğünü görmek güzel değil, ama kritik görünmüyor. Hmmm ...

cevap

17

Bir XML dosyasını ObjectInputStream olarak geçiriyorsunuz, ancak bu veriler daha önce ObjectOutputStream aracılığıyla serileştirilmelidir.

+5

3C3F786D doğrudur bestsss

+0

Bu çok farklı bir sorun bana yardımcı oldu ... teşekkür ederim! –

+0

Giriş akışı nesne giriş akışına geçirilirse projenin kaynak klasöründeki bir kaynaktan nasıl oluşturulur? Örnek: InputStream is = this.getClass(). GetResourceAsStream (pathToResource); –