Android and ICU 5.0
I started to use ICU4J in my Android project. But when I run the project on a device, at launch, I have a crash. 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 requires some more files, but I added all sources I found in the jar... If someone had the same problem or just has the solution... Thanks !
Edit: Just had 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)
Ok I figured out the answer to this issue. Apparently you can not just download the fully built .jar file for ICU and just drop it in. It does not contain the data files.
You HAVE to:
Would have helped if this was explained somewhere on their site or if they actually provided a .jar file that included the data files. This caused about a day long headache to figure out so hopefully this helps someone else.
链接地址: http://www.djcxy.com/p/73252.html上一篇: 是否有可能检测脚本是否作为RequireJS模块加载?
下一篇: Android和ICU 5.0