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 ...
To prawda, że 3C3F786D to Xml. Bardzo obserwujący :) – bestsss
Pomogło mi to z innym problemem ... dziękuję! –
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); –