公開した Android アプリの Crittercism (クラッシュ レポート サービス) でいくつかのエラーが表示されます。トレースは次のとおりです。
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 Time Library がビルド パスなどに追加されていないことが原因です)。
私の唯一の推測では、誰かがアプリを逆コンパイルして海賊版を作成しようとしており (かなり人気のある有料アプリです)、誤って再コンパイルするとこのエラーが表示されます。その場合、エラーが表示されていることをうれしく思います。これについて心配する必要はありません。
もう 1 つの奇妙な点は、問題の原因となっているコードが try/catch で囲まれていて、それをキャッチしていないように見えることです。
try {
DateTime dt = new DateTime();
DateTimeFormatter fmt = ISODateTimeFormat.dateTime();
return fmt.print(dt);
} catch (Exception e) {
//Report issue to Analytics service
}
私には、このエラーがキャッチされるはずだったので、Crittercism でこのエラーが表示される可能性はさらに低いように思えます。誰でもこれを説明できますか?