2015-09-25 11 views
6

Tôi không chắc chắn làm thế nào điều này thậm chí có thể, nhưng chương trình tôi đang chạy là cho tôi một lỗi lẻ. Tôi nhận được một ArrayIndexOutOfBoundsException: -1 trên một cho mỗi vòng lặp. Toàn bộ lỗi là dưới đây:ArrayIndexOutOfBoundsXảy ra khi sử dụng 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) 

Đường dây 210 là dòng pw.print:

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

(dòng 121 chỉ gọi trên đầu ra)

Tôi đã điều tra lỗi này cho một thời gian dài và tôi không thể tìm ra nguyên nhân của nó. Tôi cho rằng có gì đó sai với xstream, nhưng tôi đã thử nó với các kết quả đầu ra khác.

+0

Tôi sẽ kiểm tra nội dung đối tượng _p_ -> phải là điều gì đó sai trên một trong số chúng. Hoặc có thể _xstream_ có vấn đề – JavierFromMadrid

+0

Nội dung của p (sản phẩm) thực sự là các lớp con của Sản phẩm. Đó có phải là một vấn đề tiềm năng? – Tanner

+4

Có thể là lỗi đã được sửa trong 1.4.6: http://x-stream.github.io/jira/746/ – Andreas

Trả lời

8

Như Andreas đã chỉ ra, đây thực sự là một bug in XStream đã được sửa trong phiên bản 1.4.6. Phiên bản mới nhất của XStream có thể được tải xuống here.

Các vấn đề liên quan