Я вижу пару ошибок, возникающих в Crittercism (служба отчетов о сбоях) для моего опубликованного приложения для Android. Трассировка следующая:
0 java.io.IOException: Resource not found: "org/joda/time/tz/data/ZoneInfoMap" ClassLoader: dalvik.system.PathClassLoader@45908320
1 at org.joda.time.tz.ZoneInfoProvider.openResource(ZoneInfoProvider.java:211)
2 at org.joda.time.tz.ZoneInfoProvider.<init>(ZoneInfoProvider.java:123)
3 at org.joda.time.tz.ZoneInfoProvider.<init>(ZoneInfoProvider.java:82)
4 at org.joda.time.DateTimeZone.getDefaultProvider(DateTimeZone.java:462)
5 at org.joda.time.DateTimeZone.setProvider0(DateTimeZone.java:416)
6 at org.joda.time.DateTimeZone.<clinit>(DateTimeZone.java:115)
7 at org.joda.time.chrono.GregorianChronology.<clinit>(GregorianChronology.java:71)
8 at org.joda.time.chrono.ISOChronology.<clinit>(ISOChronology.java:66)
9 at org.joda.time.base.BaseDateTime.<init>(BaseDateTime.java:61)
10 at org.joda.time.DateTime.<init>(DateTime.java:155)
Поиск показывает, что это обычно проблема компиляции (обычно это то, что библиотека времени Joda не была добавлена в путь сборки или что-то в этом роде), но тогда почему только около 4 пользователей из пары тысяч видят эта ошибка?
Мое единственное предположение состоит в том, что кто-то пытается декомпилировать приложение, чтобы пиратить его (это довольно популярное платное приложение), и видит эту ошибку, когда они неправильно перекомпилировали. В этом случае я рад, что они видят ошибки, и мне не нужно об этом беспокоиться.
Другая странность заключается в том, что код, вызывающий проблему, был окружен блоком try/catch, который, похоже, не перехватывал его:
try {
DateTime dt = new DateTime();
DateTimeFormatter fmt = ISODateTimeFormat.dateTime();
return fmt.print(dt);
} catch (Exception e) {
//Report issue to Analytics service
}
Что, на мой взгляд, даже кажется более маловероятно, что эта ошибка появится на Криттерцизме, так как она должна была быть обнаружена. Кто-нибудь может это объяснить?