NoClassDefFoundError в вложенной банке (Android)

Я создал простое приложение для тестирования сценария, который не работает с NoClassDefFoundError .

Возьмем, например, проект Test1 android с классом TestClass с некоторыми методами. Этот проект Test1, который я экспортировал как test1.jar и экспортировал только исходную папку с Class TestClass и classpath и. Файлы project .

В другом проекте Android Test2 я добавил этот test1.jar в папку libs. И в этом проекте Test2 у меня есть класс Test2Class, который вызывает методы класса test1.jar.

После этого я экспортировал этот проект test2.jar файл test2.jar следующие шаги.

Поэтому, когда я использую этот test2.jar в другом проекте, я получаю эту ошибку выше NoClassDefFoundError . Это сценарий банки в банке.

Где-нибудь я должен что-то сделать, чтобы я мог получить доступ к банке внутри банки.

Заранее спасибо.

Попробуйте это шаг за шагом:
1. Remove all library проекты Remove all library затем очистите.
2. Перейдите в первый проект Test1 Щелкните правой кнопкой мыши Properties -> Android. Проверить Is Library (сделать ее библиотекой).
3. Перейдите во второй Test2 Щелкните правой кнопкой мыши Свойства -> Android в разделе «Библиотека» выберите « Add -> Добавить первый проект в качестве библиотеки.
4. Перейдите во второй Project Test2 Щелкните правой кнопкой мыши Properties -> Android. Кроме того, Check Is Library .
5. Перейдите к третьему project C Щелкните правой кнопкой мыши Properties -> Android. В разделе «Библиотека» выберите « Add – «Добавить первый» и «Второй» в качестве библиотеки. (Не делайте Proj C в качестве библиотеки)
6. Теперь очистите все и запустите Proj C
Изменить: вы также можете увидеть эту ошибку. Ошибка 405212. Не упаковывайте банки в упакованную банку и ошибку 361628. Вложенные банки не могут быть распакованы с помощью Java 1.7 . Попробуйте сделать так, как должно работать.

Удалите банки из пути сборки java. Добавьте новое имя папки как «libs» и разместите все банки в этой папке. Приложение будет работать нормально

Попробуй это :

Перейдите в Project / Properties / Java Build Path / Order and Export. Убедитесь, что перед Android-зависимыми приложениями и библиотекой поддержки есть проверка, если вы ее используете.

Отметьте все флажки и нажмите «Применить» и очистите проект.

Это невозможно сделать. Вам нужно будет разархивировать JAR и добавить их в путь к классам, чтобы открыть вложенный JAR. См. Эту ошибку Java для справки.

Существует несколько альтернатив для правильного обращения с ним, см. Этот вопрос, например, который рекомендует One-jar , Uber jar или Shade

Примечание. Это актуально для Java, Andoid может вести себя по-другому, но похоже, что у него такая же проблема.