简体   繁体   English

Genson引发ArrayIndexOutOfBoundsException

[英]Genson throws ArrayIndexOutOfBoundsException

Genson's internal library code is causing an ArrayIndexOutOfBoundsException because it's trying to index an array which I assume is null. Genson的内部库代码导致ArrayIndexOutOfBoundsException,因为它试图索引我认为为null的数组。 See below. 见下文。

I get the following stack trace: 我得到以下堆栈跟踪:

Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
        at com.owlike.genson.reflect.BeanPropertyFactory$StandardFactory.createMutator(BeanPropertyFactory.java:115)
        at com.owlike.genson.reflect.BeanPropertyFactory$CompositeFactory.createMutator(BeanPropertyFactory.java:87)
        at com.owlike.genson.reflect.BaseBeanDescriptorProvider.provideMethodMutators(BaseBeanDescriptorProvider.java:232)
        at com.owlike.genson.reflect.BaseBeanDescriptorProvider.provideBeanPropertyMutators(BaseBeanDescriptorProvider.java:119)
        at com.owlike.genson.reflect.AbstractBeanDescriptorProvider.provide(AbstractBeanDescriptorProvider.java:98)
        at com.owlike.genson.reflect.BeanDescriptorProvider$CompositeBeanDescriptorProvider.provide(BeanDescriptorProvider.java:60)
        at com.owlike.genson.convert.BasicConvertersFactory.provide(BasicConvertersFactory.java:104)
        at com.owlike.genson.convert.BasicConvertersFactory.create(BasicConvertersFactory.java:69)
        at com.owlike.genson.convert.BasicConvertersFactory.create(BasicConvertersFactory.java:51)
        at com.owlike.genson.reflect.AbstractBeanDescriptorProvider$ContextualFactoryDecorator.create(AbstractBeanDescriptorProvider.java:75)
        at com.owlike.genson.reflect.AbstractBeanDescriptorProvider$ContextualFactoryDecorator.create(AbstractBeanDescriptorProvider.java:64)
        at com.owlike.genson.convert.ChainedFactory.create(ChainedFactory.java:88)
        at com.owlike.genson.convert.ChainedFactory.create(ChainedFactory.java:75)
        at com.owlike.genson.convert.ChainedFactory.create(ChainedFactory.java:88)
        at com.owlike.genson.convert.ChainedFactory.create(ChainedFactory.java:75)
        at com.owlike.genson.convert.CircularClassReferenceConverterFactory.create(CircularClassReferenceConverterFactory.java:55)
        at com.owlike.genson.convert.CircularClassReferenceConverterFactory.create(CircularClassReferenceConverterFactory.java:19)
        at com.owlike.genson.Genson.provideConverter(Genson.java:148)
        at com.owlike.genson.convert.DefaultConverters$CollectionConverterFactory.create(DefaultConverters.java:239)
        at com.owlike.genson.convert.DefaultConverters$CollectionConverterFactory.create(DefaultConverters.java:231)
        at com.owlike.genson.convert.BasicConvertersFactory.provide(BasicConvertersFactory.java:97)
        at com.owlike.genson.convert.BasicConvertersFactory.create(BasicConvertersFactory.java:69)
        at com.owlike.genson.convert.BasicConvertersFactory.create(BasicConvertersFactory.java:51)
        at com.owlike.genson.reflect.AbstractBeanDescriptorProvider$ContextualFactoryDecorator.create(AbstractBeanDescriptorProvider.java:75)
        at com.owlike.genson.reflect.AbstractBeanDescriptorProvider$ContextualFactoryDecorator.create(AbstractBeanDescriptorProvider.java:64)
        at com.owlike.genson.convert.ChainedFactory.create(ChainedFactory.java:88)
        at com.owlike.genson.convert.ChainedFactory.create(ChainedFactory.java:75)
        at com.owlike.genson.convert.ChainedFactory.create(ChainedFactory.java:88)
        at com.owlike.genson.convert.ChainedFactory.create(ChainedFactory.java:75)
        at com.owlike.genson.convert.CircularClassReferenceConverterFactory.create(CircularClassReferenceConverterFactory.java:55)
        at com.owlike.genson.convert.CircularClassReferenceConverterFactory.create(CircularClassReferenceConverterFactory.java:19)
        at com.owlike.genson.Genson.provideConverter(Genson.java:148)
        at com.owlike.genson.Genson.serialize(Genson.java:272)
        at com.owlike.genson.ext.jaxrs.GensonJsonConverter.writeTo(GensonJsonConverter.java:85)

It's caused by the following method from the Genson library: 这是由Genson库中的以下方法引起的:

  public PropertyMutator createMutator(String name, Method method, Type ofType, Genson genson) {
      Type expandedType = TypeUtil.expandType(method.getGenericParameterTypes()[0], ofType);
      return new PropertyMutator.MethodMutator(name, method, expandedType,
        getRawClass(ofType));
    }

It's coming from the following code in the method: method.getGenericParameterTypes()[0] . 它来自方法中的以下代码: method.getGenericParameterTypes()[0] When I debug it says the method is "error". 当我调试时说方法是“错误”。 It's trying to operate on a List where MyObject has the following methods (only failing method is shown): 它试图在MyObject具有以下方法的List上进行操作(仅显示失败方法):

@XmlElement(nillable=true)
    public String getError() {
        return error;
    }
    public void setError(String error) {
        this.error = error;
    }

How do I work around this bug? 如何解决此错误? Why is Genson doing it? Genson为什么要这样做?

This was indeed a bug and has been fixed in this commit . 这确实是一个错误,并且已在此commit中修复。 The fix will be part of release 1.5. 该修补程序将是1.5版的一部分。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM