我读过许多关于ArrayStoreExceptions的文章,其中大部分都属于以下几类:
我的不属于这些类别。还有one other case,OP怀疑是某种只出现在Unix上的bug。我想我正在处理那个案子,我不知道怎样才能更接近这个问题。
我已经尽可能多地分解了代码,看起来如下:
System.out.println("Declaring RecordValues array");
RecordValues[] rv = new RecordValues[3];
System.out.println("This array is meant for "+rv.getClass().getComponentType());
System.out.println("Adding user defaults which is: "+userdefaults.getClass().getName());
System.out.println("Its parent is: "+userdefaults.getClass().getSuperclass().getName());
rv[0] = userdefaults;
System.out.println("Adding templvalues which is: "+tmplvalues.getClass().getName());
rv[1] = tmplvalues;
System.out.println("Adding sessionvalues which is: "+tmplvalues.getClass().getName());
rv[2] = sessionvalues;它的产出是:
[ant:createwo] Declaring RecordValues array
[ant:createwo] This array is meant for class org.kp.mbe.arscli.datamap.RecordValues
[ant:createwo] Adding user defaults which is: org.kp.mbe.arscli.datamap.UserValues
[ant:createwo] Its parent is: org.kp.mbe.arscli.datamap.RecordValues
:createwo FAILED <--
...
Caused by: java.lang.ArrayStoreException: org.mbe.arscli.datamap.UserValuesUserValues是RecordValues的一个子类型.我使用这些类创建了一些简单的测试,但无法复制错误。另外(这是非常奇怪的部分),这已经工作了六个多月。我已经对这个工具的其他部分做了一些修改,但是在这些库中没有任何地方。它突然冒出来了。
我想知道还有什么会导致ArrayStoreException。我100%确信UserValues是RecordValues的一个子类,一旦我尝试将它添加到数组中,它就会失败。主机是64位RH,OpenJDK java版本1.7.0.45。
我知道ArrayStoreException在告诉我什么,我的问题是如何在故障排除方面更进一步?如果UserValues是RecordValues,我该去哪里??
发布于 2014-06-13 15:16:33
在发帖后,我放弃了数组,并将其更改为一个列表,该列表虽然仍然失败,但却给出了一个更具体的问题:
Caused by: java.lang.LinkageError: loader constraint violation: when
resolving method
"org.mbe.arscli.datamap.ValueResolver.resolve(Ljava/util/List;)Lorg/mbe/arscli/datamap/RecordValues;"
the class loader (instance of org/apache/tools/ant/loader/AntClassLoader5) of the current class,
org/build/ant/CreateRemedyWo, and the class loader (instance of java/net/URLClassLoader) for resolved class,
org/mbe/arscli/datamap/ValueResolver, have different Class objects for the type )Lorg/mbe/arscli/datamap/RecordValues; used in the
signature 正如@Taylor猜测的那样,这是由多个类加载器通过gradle造成的。虽然我已经很长时间没有更改这段代码了,但我最近更改了构建文件中的依赖项声明。幸运的是,我从列表中得到的错误比来自数组的错误更精确!
https://stackoverflow.com/questions/24192198
复制相似问题