只有一些用户的报告“未找到资源”错误。 这是否有意义?(Only some users repo

2019-06-24 18:38发布

我看到我发布的Android应用AA夫妇上来就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)

搜索这表明这一般是在编译的问题(通常是,乔达时库未添加到构建路径或东西),但当时只有4用户出一对夫妇一千的,为什么会看到这个错误?

我唯一的猜测是,有人试图编译应用程序海盗它(它是一个相当流行的付费应用),并认为这个错误,他们错误地重新编译时。 在这种情况下,我很高兴他们所看到的错误,我不需要担心这个问题。

另一个奇怪的是,导致该问题的代码是由一个try / catch,它没有似乎抓住它包围:

try {
    DateTime dt = new DateTime();
    DateTimeFormatter fmt = ISODateTimeFormat.dateTime();
    return fmt.print(dt);
} catch (Exception e) {
    //Report issue to Analytics service
} 

这对我来说,使它看起来更加不可能这样的错误将出现在Crittercism,因为它应该已被发现。 任何人都可以解释一下吗?

Answer 1:

这可以在你错过初始化的情况下发生的:

JodaTimeAndroid.init(this);


Answer 2:

我看到从流行的免费应用程序类似,罕见报道。 我至今没有重现它。 有各种 引用到这个问题的网络,而不是所有的Android涉及周围洒。

一个线索:ZoneInfoMap是在原JAR资源文件,而不是一类。 所以,任何不同的应用市场中剥离出的非类信息(如不能解压缩,然后再罐子),ZoneInfoMap将是一个候选人。 同样,如果任何类加载器工具有一个问题,出于安全或愚蠢,非一流的资源,ZoneInfoMap将是一个候选人。

换个角度:可以在有问题的运行环境有自己的乔达时间较早罐子在classpath中,一个缺少/数据/段?

底线:看起来这是狂野西部的Android,一个是我已经学会了忽略,直到我能找到一个摄制的另一个例子。



Answer 3:

我有同样的问题,一个很好的协议对谷歌搜索挖掘之后我想通了。 该ZoneInfoMap文件用的参数运行jodaTime(ZoneInfoCompiler)创建的:

    -dst src\org\joda\time\tz\data src\org\joda\time\tz\src\africa 
src\org\joda\time\tz\src\antarctica src\org\joda\time\tz\src\asia 
src\org\joda\time\tz\src\australasia src\org\joda\time\tz\src\backward 
src\org\joda\time\tz\src\etcetera src\org\joda\time\tz\src\europe 
src\org\joda\time\tz\src\northamerica src\org\joda\time\tz\src\pacificnew 
src\org\joda\time\tz\src\southamerica src\org\joda\time\tz\src\systemv

这将增加所有时区的jodaTimer,您可以创建更多的时区的区域,我相信,如果你知道如何为好,而你没有包括所有的人,如果你并不需要所有的人。

为什么它与错误崩溃是因为它正在寻找一个文件,该文件是不存在。 不知道究竟为什么尝试追赶无法正常工作,但我怀疑它做的事实jodaTimer是一个JAR库(我的是至少)?

不知道这是它是如何打算做或者是否有更好的解决办法,但是这就是我没有和它完美的现在对我的作品。

这有助于引用中号得出这样的结论: http://joda-interest.219941.n2.nabble.com/How-to-run-Joda-time-s-test-Resource-Not-Found-exception-td5913668.html http://sourceforge.net/p/joda-time/discussion/337835/thread/2798a578/

我希望这有帮助。



文章来源: Only some users reporting “Resource Not Found” error. Does this make sense?