Android和ICU5.0

Android和ICU5.0,android,icu,Android,Icu,我开始在我的Android项目中使用ICU4J。但当我在设备上运行项目时,在启动时,我遇到了崩溃。 以下是错误: FATAL EXCEPTION: main java.lang.ExceptionInInitializerError at com.ibm.icu.text.SimpleDateFormat.<clinit>(SimpleDateFormat.java:849) at com.ibm.icu.text.DateFormat.get(DateForma

我开始在我的Android项目中使用ICU4J。但当我在设备上运行项目时,在启动时,我遇到了崩溃。 以下是错误:

 FATAL EXCEPTION: main
 java.lang.ExceptionInInitializerError
    at com.ibm.icu.text.SimpleDateFormat.<clinit>(SimpleDateFormat.java:849)
    at com.ibm.icu.text.DateFormat.get(DateFormat.java:1492)
    at com.ibm.icu.text.DateFormat.getDateInstance(DateFormat.java:1191)
    at com.phonedev.myApp.calendar.TimeCursor.getLongDate(TimeCursor.java:333)
    at com.phonedev.myApp.about.VersionInfo.getBuildDateTime(VersionInfo.java:44)
    at com.phonedev.myApp.myAppActivity.onCreate(myAppActivity.java:184)
    at android.app.Activity.performCreate(Activity.java:5133)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
    at android.app.ActivityThread.access$600(ActivityThread.java:141)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:137)
    at android.app.ActivityThread.main(ActivityThread.java:5103)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:525)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
    at dalvik.system.NativeStart.main(Native Method)
 Caused by: java.util.MissingResourceException: Could not find the bundle com/ibm/icu/impl/data/icudt50b/en_US
    at com.ibm.icu.impl.ResourceBundleWrapper.getBundleInstance(ResourceBundleWrapper.java:109)
    at com.ibm.icu.util.UResourceBundle.instantiateBundle(UResourceBundle.java:573)
    at com.ibm.icu.util.UResourceBundle.getBundleInstance(UResourceBundle.java:145)
    at com.ibm.icu.util.UResourceBundle.getBundleInstance(UResourceBundle.java:228)
    at com.ibm.icu.impl.CalendarData.<init>(CalendarData.java:28)
    at com.ibm.icu.util.Calendar.setWeekData(Calendar.java:4604)
    at com.ibm.icu.util.Calendar.<init>(Calendar.java:1584)
    at com.ibm.icu.util.GregorianCalendar.<init>(GregorianCalendar.java:391)
    at com.ibm.icu.util.GregorianCalendar.<init>(GregorianCalendar.java:337)
    at com.ibm.icu.text.DateFormat$Field.<clinit>(DateFormat.java:1787)
    ... 20 more

好的,我找到了这个问题的答案。显然,您不能只下载ICU的完整构建的.jar文件,然后直接将其放进去。它不包含数据文件

必须执行以下操作:

  • 下载.tgz文件,上面写着“包括整个源代码包的gzip tar存档”
  • 将该文件和cd解压缩到该目录中
  • 运行“ant”自己构建ICU4J
  • 它将创建一个icu4j.jar文件,其中包含您需要的数据文件。您可以将其放入libs目录,并修改gradle build.gradle文件以包含它

  • 如果在他们的站点的某个地方解释了这一点,或者如果他们实际提供了一个包含数据文件的.jar文件,就会有所帮助。这导致了一整天的头痛,所以希望这能帮助其他人

    你有没有找到答案?我的眼睛也一样谢谢!我就是这么做的。但这对我来说是个糟糕的解决方案,因为罐子太重了。。。过去从7Mb到16Mb(约)
    dvmFindClassByName rejecting 'com/ibm/icu/impl/data/icudt50b'
    dvmFindClassByName rejecting 'com/ibm/icu/impl/data/icudt50b_root'
    dvmFindClassByName rejecting 'com/ibm/icu/impl/data/icudt50b'
    dvmFindClassByName rejecting 'com/ibm/icu/impl/data/icudt50b_en'
    dvmFindClassByName rejecting 'com/ibm/icu/impl/data/icudt50b_en_US'
    dvmFindClassByName rejecting 'com/ibm/icu/impl/data/icudt50b'
    dvmFindClassByName rejecting 'com/ibm/icu/impl/data/icudt50b_zoneinfo64'
    dvmFindClassByName rejecting 'com/ibm/icu/impl/data/icudt50b'
    dvmFindClassByName rejecting 'com/ibm/icu/impl/data/icudt50b_en'
    dvmFindClassByName rejecting 'com/ibm/icu/impl/data/icudt50b_en_US'
    dvmFindClassByName rejecting 'com/ibm/icu/impl/data/icudt50b'
    dvmFindClassByName rejecting 'com/ibm/icu/impl/data/icudt50b_supplementalData'
    dvmFindClassByName rejecting 'com/ibm/icu/impl/data/icudt50b'
    dvmFindClassByName rejecting 'com/ibm/icu/impl/data/icudt50b_en'
    dvmFindClassByName rejecting 'com/ibm/icu/impl/data/icudt50b_en_US'
    dvmFindClassByName rejecting 'com/ibm/icu/impl/data/icudt50b'
    dvmFindClassByName rejecting 'com/ibm/icu/impl/data/icudt50b_res'
    dvmFindClassByName rejecting 'com/ibm/icu/impl/data/icudt50b'
    dvmFindClassByName rejecting 'com/ibm/icu/impl/data/icudt50b_en'
    dvmFindClassByName rejecting 'com/ibm/icu/impl/data/icudt50b_en_US'
    dvmFindClassByName rejecting 'com/ibm/icu/impl/data/icudt50b_res_index'
    dvmFindClassByName rejecting 'com/ibm/icu/impl/data/icudt50b'
    dvmFindClassByName rejecting 'com/ibm/icu/impl/data/icudt50b_@calendar=gregorian'
    dvmFindClassByName rejecting 'com/ibm/icu/impl/data/icudt50b'
    dvmFindClassByName rejecting 'com/ibm/icu/impl/data/icudt50b_en'
    dvmFindClassByName rejecting 'com/ibm/icu/impl/data/icudt50b_en_US'
    threadid=11: thread exiting with uncaught exception (group=0x4176a700)