2013-09-16 3 views
2

Я занимаюсь разработкой Android в Eclipse совсем недавно, и недавно я столкнулся с проблемой. Я создал библиотеку, в которой я использую две дополнительные библиотеки jar: appbooster.jar и adcolony.jar. После того, как я добавил созданную библиотеку для основного приложения, о запуске он говорит:

E/AndroidRuntime(22887): 
java.lang.NoClassDefFoundError:com.appsfire.appbooster.jar.af_NotificationsManager 
E/AndroidRuntime(22887):at com.testlib.MainActivity.onCreate(MainActivity.java:14) 
... 

Я добавил appbooster.jar и adcolony.jar к основному приложению тоже (Свойства -> Java Build Path -> Библиотека -> Добавить внешние JAR). Тот же результат:

E/AndroidRuntime(26403): FATAL EXCEPTION: main 
E/AndroidRuntime(26403): java.lang.NoClassDefFoundError:com.appsfire.appbooster.jar.af_NotificationsManager 
E/AndroidRuntime(26403):at com.testlib.LibClass.initiateAppBooster(LibClass.java:9) 

Тогда я пошел (Свойства -> Java Build Path -> Заказ и экспорт) из основного приложения и проверил эти 2 фляги файлы (appbooster и AdColony). Теперь он говорит:

[2013-09-16 16:54:24 - Dex Loader] Unable to execute dex: Multiple dex files define Lorg/OpenUDID/OpenUDID_manager$ValueComparator; 
[2013-09-16 16:54:24 - TestApp] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lorg/OpenUDID/OpenUDID_manager$ValueComparator; 

Может кто-нибудь, пожалуйста, помогите мне. Я долгое время работал над этой ошибкой.

ответ

2

Оба appbooster.jar и adcolony.jar связывают библиотеки OpenUDID. Удалите эти файлы из одной из библиотек, например:

zip adcolony.jar -d org/OpenUDID/* 
+0

Спасибо большое, это сработало, вы спасли меня. Я удалил OpenUDID из adcolony.jar, как вы сказали, и это сработало. Теперь обе библиотеки установлены в одном проекте. – nolanic

0

Где вы размещали библиотеки JAR? Они должны находиться под вашей папкой libs в вашем приложении для Android. Это кажется наиболее вероятной возможностью, потому что ваш код Java Java не может читать те классы, которые находятся в этих пакетах JAR. Поэтому я определенно проверю, действительно ли они находятся в каталоге libs в рамках вашего проекта Android.

См. Следующие article.

+0

Спасибо за статью, я сделал все, что там написано, но это бесполезно. Результат тот же. Может быть, эти два файла jar несовместимы друг с другом? Проект отлично работает, если я использую только одну из этих банок. (Конечно, в этом случае я не могу использовать классы другого). – nolanic

+0

Невозможно выполнить dex: несколько файлов dex определяют Lorg/OpenUDID/OpenUDID_manager $ ValueComparator; Не удалось выполнить преобразование в формат Dalvik: невозможно выполнить dex: несколько файлов dex определяют Lorg/OpenUDID/OpenUDID_manager $ ValueComparator; – nolanic

0

Под вашей папкой libs проверьте, есть ли более одного файла .jar i.e gson-1.0 и gson-1.0(1). Удалите последнее, если оно есть.

+0

Нет файлов jar с одинаковыми именами. – nolanic

+0

Аналогичная вещь случилась со мной однажды, и это была проблема, извините! – TomSelleck

Смежные вопросы