Android и ICU 5.0

Я начал использовать ICU4J в своем проекте Android. Но когда я запускаю проект на устройстве, при запуске у меня случился сбой. Вот ошибка:

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 требуют еще нескольких файлов, но я добавил все источники, которые я нашел в банке … Если у кого-то была такая же проблема или просто есть решение … Спасибо!

Изменить: просто были эти предупреждения:

 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) 

Хорошо, я понял ответ на этот вопрос. По-видимому, вы не можете просто загрузить полностью встроенный файл .jar для ICU и просто отбросить его. Он не содержит файлы данных.

У вас есть:

  1. Загрузите файл .tgz, в котором говорится «gzipped tar archive, включая весь исходный пакет»,
  2. Раскройте этот файл и cd в этот каталог
  3. Запустите «ant» для создания ICU4J самостоятельно
  4. Он создаст файл icu4j.jar, который содержит необходимые вам файлы данных. Вы можете удалить это в свой каталог libs и внести изменения в свой файл build.gradle.

Помогли бы, если бы это было объяснено где-то на их сайте или если они действительно предоставили файл .jar, который включал файлы данных. Это вызвало дневную головную боль, чтобы понять, что, надеюсь, это помогает кому-то другому.

Intereting Posts
Android Generate Signed Apk error System.out.println в тесте android KSOAP2 java.lang.RuntimeException: невозможно выполнить сериализацию Есть ли способ в Android узнать, имеет ли пользовательское устройство фактическую клавиатуру или нет? Как вставлять и воспроизводить видео на YouTube в андроиде Проект Android Studio работает на Lollipop, но не работает на Kitkat Обнаруживает ли Android-устройство телефон или планшет с javascript Как протестировать локализованные цены с помощью In-app billing v3 CSRF в мобильных приложениях Как определить, отображается ли экранная клавиатура на экране – при использовании monkeyrunner Как получить список друзей из Facebook с помощью Android Facebook sdk? Масштабирование и поворот растрового изображения с использованием Matrix в Android Загрузите базу данных SQLite из Интернета и загрузите ее в приложение Android Кнопка Android MediaController Play / Pause и Seekbar не обновляется Android facebook applicationId не может быть пустой ошибкой, несмотря на правильность app_id