java.util.MissingResourceException:无法找到基本名称为javax.servlet.LocalStrings的资源包

3
我有一个使用multidex的Android应用程序。它已发布并拥有数十万月活用户。偶尔我会在Crashlytics上收到ExceptionInInitializerError崩溃报告,我从未能够复现这些错误。
我了解到这可能是由于multidex引起的,并且在我的配置中有multiDexKeepFile文件('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的资源包仅显示默认的、法语和日语。
谢谢。

我猜你已经尝试过这个了,对吧? - Peppermint Paddy
我不确定我应该在那里尝试什么。实际上,我并没有自己添加资源,它是通过gradle的编译行传递过来的,如果我查看我的库,我可以看到这些资源。而且就像我说的,这对于我的大多数用户来说都很好用,只有少数人会失败。 - casolorz
1个回答

1

请确保您没有漏掉添加servlet-api依赖项。

如果您使用maven,请确保此依赖项在项目中:

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

我已经拥有它,Servlets是我的应用程序的关键部分,每个月为数十万用户提供良好的服务。只有少数用户会遇到那个错误。 - casolorz
你检查过该用户的基本名称是否为空或缺少某些参数,因为它会显示“找不到基本名称包”。 - Manish Jaiswal
不是很确定我是否理解了,但错误与我在帖子中粘贴的完全相同。找不到基本名称javax.servlet.LocalStrings的包,区域设置为it_IT。我甚至看到它适用于US - casolorz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接