j2objc异常阻止运行

时间:2016-12-27 20:33:19

标签: objective-c xcode unit-testing cocoapods j2objc

我正在开发一个使用cocoapod的应用程序,它是使用j2objc构建的。但是当我尝试在Xcode中运行单元测试时,我看到以下错误:

Terminating app due to uncaught exception 'JavaLangArrayStoreException', reason: 'source of type IOSByteArray is not an array'

据我所知,Java中的数组并不完美映射到Objective C数组。但是这个异常并不会阻止应用程序运行,那么有没有办法忽略单元测试和UI测试呢?

失败的代码在cocoapod中,所以我不确定我是否能够进行任何手动转换。这是失败的路线:

return IOSObjectArray_Get(nil_chk([rawType getGenericInterfaces]), i);

2 个答案:

答案 0 :(得分:0)

我不知道您的代码,但您必须了解Objective-C数组与IOSByteArray不一样!

在使用之前,您必须将IOSByteArray转换为常规的objc数组。

使用这个

- (void)getBytes:(jbyte *)buffer
          offset:(jint)offset
          length:(jint)length;

或者

- (NSData *)toNSData;

工作方法。

答案 1 :(得分:0)

这看起来不像失败的那条线。该错误消息来自System.arraycopy,它没有说IOSByteArray不是IOSArray的子​​类which it is。 IOSObjectArray仅抛出ArrayStoreException here,并显示不同的错误消息。

您是否拥有单元测试的来源,如果有,您可以发布它或它的项目(如果它是开源的)?如果您file a j2objc issue未通过测试,则会在修复后立即通知您。

如果这是一个JUnit测试,你可以使用try / catch块来包围失败的行,就像在Java中一样。或者评论出来。 ; - )