Android and ICU 5.0

I started using ICU4J in my Android project. But when I run the project on the device, when I start it fails. Here is the error:

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 

It seems that ICU sources require a few more files, but I added all the sources that I found in the bank ... If someone had the same problem or just have a solution ... Thanks!

Edit: Only these warnings:

 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) 
+7
android icu
source share
1 answer

Ok, I understood the answer to this question. Apparently, you cannot just download the fully embedded .jar file for ICU and just add it. It does not contain data files.

You Had :

  • Download the .tgz file, which says "gzipped tar archive, including the entire source package"
  • Expand this file and CD to this directory
  • Run "ant" to create ICU4J yourself.
  • It will create an icu4j.jar file containing the data files you need. You can delete this in your libs directory and make changes to your gradle build.gradle file to include it

It would help if it was explained somewhere on their website or if they really provided a .jar file that included data files. This caused a daytime headache to realize that I hope this helps someone else.

+4
source share

All Articles