2015-09-25 10 views
6

私はこれがどのように可能であるかわかりませんが、実行中のプログラムが私に奇妙なエラーを与えています。私はArrayIndexOutOfBoundsExceptionを取得しています:各ループに対して-1。全体の誤差は以下の通りです:ArrayIndexOutOfBoundsExceptionがXStreamを使用している場合

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1 
at com.thoughtworks.xstream.core.util.OrderRetainingMap.entrySet(OrderRetainingMap.java:77) 
at java.util.HashMap.putMapEntries(HashMap.java:511) 
at java.util.HashMap.putAll(HashMap.java:784) 
at com.thoughtworks.xstream.core.util.OrderRetainingMap.<init>(OrderRetainingMap.java:36) 
at com.thoughtworks.xstream.converters.reflection.FieldDictionary.buildMap(FieldDictionary.java:135) 
at com.thoughtworks.xstream.converters.reflection.FieldDictionary.fieldsFor(FieldDictionary.java:76) 
at com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider.visitSerializableFields(PureJavaReflectionProvider.java:126) 
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.doMarshal(AbstractReflectionConverter.java:81) 
at com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter.marshal(AbstractReflectionConverter.java:72) 
at com.thoughtworks.xstream.core.AbstractReferenceMarshaller.convert(AbstractReferenceMarshaller.java:69) 
at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:58) 
at com.thoughtworks.xstream.core.TreeMarshaller.convertAnother(TreeMarshaller.java:43) 
at com.thoughtworks.xstream.core.TreeMarshaller.start(TreeMarshaller.java:82) 
at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.marshal(AbstractTreeMarshallingStrategy.java:37) 
at com.thoughtworks.xstream.XStream.marshal(XStream.java:895) 
at com.thoughtworks.xstream.XStream.marshal(XStream.java:884) 
at com.thoughtworks.xstream.XStream.toXML(XStream.java:857) 
at com.thoughtworks.xstream.XStream.toXML(XStream.java:844) 
at unl.cse.assignments.DataConverter.output(DataConverter.java:210) 
at unl.cse.assignments.DataConverter.main(DataConverter.java:121) 

ライン210はpw.printラインである:私は、このエラーを調査してきた

for(Product p : products) 
    { 
     if(AwardTicket.class.isInstance(p)){ 
      xstream.alias("awardTicket", AwardTicket.class); 
      pw.print(xstream.toXML(p) + "\n"); 
     } 
} 

(ライン121は、単に出力に呼び出す)

長い時間と私はそれの原因を把握することはできません。私はxstreamに何か問題があると仮定しましたが、他の出力でも試しました。

+0

私は_p_オブジェクトの内容をチェックしています - >それらのいずれかに間違っているはずです。または_xstream_に問題がある可能性があります – JavierFromMadrid

+0

p(products)の内容は実際にはProductのサブクラスです。それは潜在的な問題かもしれませんか? – Tanner

+4

1.4.6で修正されたバグかもしれません:http://x-stream.github.io/jira/746/ – Andreas

答えて

8

Andreas氏によると、これは実際にはバージョン1.4.6で修正されたbug in XStreamです。 XStreamの最新バージョンはhereからダウンロードできます。

関連する問題