我有一个使用multidex的Android应用。它已发布,每月用户数十万。每隔一段时间我就会在Crashlytics上遇到ExceptionInInitializerError
崩溃。我从来没有能够重现它们。
我读到这可能是由于multidex而且我的配置中有multiDexKeepFile file('multidex-config.txt')
的类列表会有所帮助,但它似乎没有帮助,至少不适用于此资源。这是我multidex-config.txt
上的内容:
org.eclipse.jetty.http.MimeTypes
org.eclipse.jetty.server.Server
javax.servlet.LocalStrings
这些都是我过去曾经崩溃的类。我还在等着看其中一些是否已修复,但下面的这一个肯定会回来:
Fatal Exception: java.lang.ExceptionInInitializerError
at myapp.run(myclass.java:986)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
Caused by java.util.MissingResourceException: Can't find bundle for base name javax.servlet.LocalStrings, locale it_IT
at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1501)
at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1324)
at java.util.ResourceBundle.getBundle(ResourceBundle.java:723)
at javax.servlet.GenericServlet.(GenericServlet.java)
那我怎么解决这个问题呢?在这种情况下,它似乎正在寻找意大利文件,情况并非总是这样,我在意大利有很多用户,所以我不确定为什么它只会崩溃一些。 Android Studio上LocalStrings
的资源包仅显示默认值,法语和日语。
感谢。
答案 0 :(得分:1)
确保您不会错过添加servlet-api依赖项。
如果你正在使用maven,请确保这个依赖项在你的项目中:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>