2013-08-07 16 views
7

Ho iniziato a utilizzare ICU4J nel mio progetto Android. Ma quando eseguo il progetto su un dispositivo, al momento del lancio, ho un crash. Ecco l'errore:Android e ICU 5.0

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 

Sembra che le fonti di terapia intensiva richiede alcuni più file, ma ho aggiunto tutte le fonti che ho trovato nel vaso ... Se qualcuno ha avuto lo stesso problema o semplicemente ha la soluzione .. Grazie!

Edit: Sono appena tornata da questi avvertimenti:

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/[email protected]=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) 
+0

Hai mai trovato una risposta a questo? Sto avendo lo stesso problema –

risposta

4

Ok ho capito la risposta a questo problema. Apparentemente non puoi semplicemente scaricare il file .jar completamente costruito per ICU e lasciarlo cadere. Non contiene i file di dati.

È HANNO a:

  1. Scaricare il file .tgz che dice "archivio tar compresso con gzip compreso l'intero pacchetto sorgente"
  2. Decomprimere il file e cd nella directory
  3. Run "ant "per creare ICU4J da solo
  4. Creerà un file icu4j.jar che contiene i file di dati necessari. Si può cadere che nella directory libs e modificare il file build.gradle Gradle includerlo

avrebbe aiutato se questo è stato spiegato da qualche parte sul proprio sito o se effettivamente fornito un file .jar che ha incluso i file di dati . Ciò ha causato un mal di testa lungo un giorno per capire, quindi spero che questo aiuti qualcun altro.

+1

Sì, grazie! Questo è quello che ho fatto. Ma questa era una cattiva soluzione per me perché il barattolo era troppo pesante ... Passato da 7Mb a 16Mb (Approx) –

+0

No, grazie, l'intera dimensione della mia app è inferiore a 3MB ... – Pedram

Problemi correlati