2017-11-10 3 views
3

Ich habe eine Android-App, die Multidex verwendet. Es ist veröffentlicht und hat monatliche Benutzer in Hunderttausenden. Hin und wieder bekomme ich ExceptionInInitializerError Abstürze auf Crashlytics. Ich konnte sie nie reproduzieren.java.util.MissingResourceException: Bündel für Basisname kann nicht gefunden werden javax.servlet.LocalStrings

las ich, dass dies auf Grund sein kann multidex und dass multiDexKeepFile file('multidex-config.txt') auf meine Config mit einer Liste der Klassen würde helfen, aber es scheint nicht, zumindest für diese Ressource nicht zu helfen. Dies ist der Inhalt auf meinem multidex-config.txt:

org.eclipse.jetty.http.MimeTypes 
org.eclipse.jetty.server.Server 
javax.servlet.LocalStrings 

Das sind alle Klassen, für die ich so Abstürze in der Vergangenheit gehabt haben. Ich warte immer noch zu sehen, ob einige von denen festgelegt sind, aber dieses unten kommt immer wieder sicher:

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) 

So wie kann ich dieses Problem beheben? In diesem Fall scheint es nach der italienischen Datei zu suchen, das ist nicht immer der Fall und ich habe viele Nutzer in Italien, daher bin ich mir nicht sicher, warum es nur für ein paar abstürzt. Das Ressourcenpaket in Android Studio für LocalStrings zeigt nur eine Standardsprache, Französisch und Japanisch.

Danke.

+0

Ich denke, Sie haben versucht, [diese] (https://blogs.oracle.com/chengfang/solve-javautilmissingresourceexception:- cant-find-bundle-for-base-name-comconfig, -locale-zhcn) schon, oder? –

+0

Ich bin mir nicht sicher, was ich dort versuchen sollte. Ich füge die Ressource nicht wirklich selbst hinzu, es kommt durch die Kompilierungslinie auf Gradle, und ich kann die Ressourcen sehen, wenn ich meine Bibliotheken ansehe. Wie ich schon sagte, funktioniert das gut für die meisten meiner Benutzer, nur für einige wenige. – casolorz

Antwort

1

Stellen Sie sicher, dass Sie nicht fehlen, um die Servlet-API-Abhängigkeit hinzuzufügen.

Wenn Sie mit Maven sicherstellen, dass diese Abhängigkeit in Ihrem Projekt ist:

<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>javax.servlet-api</artifactId> 
    <version>3.1.0</version> 
</dependency> 
+0

Ich habe es und ich Servlets sind ein wichtiger Teil meiner App und es funktioniert gut für Hunderttausende von Benutzern jeden Monat. Es sind nur ein paar Benutzer, die diesen Fehler bekommen. – casolorz

+0

haben Sie überprüft, dass für diese Benutzer Basisname nicht leer ist oder einige params fehlt, wie es sagt ** Kann nicht Bündel für den Basisnamen finden ** –

+0

Nicht ganz sicher verstehe ich aber der Fehler ist genau so, wie ich auf Post eingefügt. 'Bündel für den Basisnamen javax.servlet.LocalStrings, locale it_IT' kann nicht gefunden werden. Ich habe es sogar für 'US' gesehen. – casolorz

Verwandte Themen